0
votes

Ajax obtient une réponse correcte mais ne pas charger dans la page

J'ai écrit ci-dessous. Vérification des outils de développement, je peux voir que le code HTML correct est dans la réponse, sauf que cela ne se charge pas dans la page. Aucune erreur n'apparaît dans la console. XXX PRE>

Qu'est-ce que je manque? P>

EDIT: P>

Voici la réponse HTML, j'ai omis l'en-tête et Footer: P>

public IActionResult Index(string id)
{
    Guid selectedId = Guid.Parse(id);

    var vm = new HomeViewModel
    {
        Manufacturers = context.ManufacturersTable.OrderBy(x => x.Manufacturer).ToList(),
        Models = context.ModelsTable.OrderBy(x => x.ModelName).Where(x => x.ManufacturerId == selectedId).ToList(),
    }
}


5 commentaires

Pouvez-vous ajouter l'exemple de données?


Vous êtes chacun () n'a pas de sens. Vous êtes en boucle sur les résultats de votre recherche JQuery, qui est un identifiant alors qu'un seul élément et d'essayer d'utiliser des données de soi-même pour vous changer. Vous n'utilisez jamais les données


Le problème n'est pas votre Ajax mais votre jQuery lorsque vous aimez les données. Faire une version minimale du code suffit d'ajouter les données à l'endroit où vous le souhaitez


Votre question est similaire à celle-ci Stackoverflow.com/Questtions/41343215/...


Regardez ici aussi Stackoverflow.com/Questtions/56537153/...


3 Réponses :


0
votes

sur le rappel de la réussite Ajax, vous êtes itération du sélecteur déroulant. Vous devez itérer sur les données de réponse à la place:

$('#manufacturerDropDown').change(function () {
    var selected = $(this).val();
    $.ajax({
        url: '/Home/Index',
        data: { id: $('#manufacturerDropDown option:selected').val() },
        type: "post",
        cache: false,
        success: function (data) {
            alert(data);
            var modelDropDown = $('#modelDropDown');
            modelDropDown.empty();

            data.forEach(function (item) {
                modelDropDown.append(
                    $('<option>', {
                        value: item.value,
                        text: item.text
                    }));
            });
        },
        error: function () {
            alert(xhr.status);
            alert(thrownError);
        }
    });
}); 


2 commentaires

Je reçois que la fonction n'est pas une fonction pour cela, possible en raison du type de données?


Que veux-tu dire? J'utilise JavaScript Array foreach Méthode depuis que je suppose que ce que vous obtenez dans la réponse est un tableau. Est-ce que cette hypothèse est incorrecte? Dans ce cas, que recevez-vous de la réponse AJAX?




0
votes

Essayez quelque chose comme ceci:

success: function (data) {
            alert(data);
            var modelDropDown = $('#modelDropDown');
            var html="";
            for(var i=0; i<data.length; i++){
                   html+="<option value='"+data[i].value+"'>"+data[i].text+"</option>";
             }
             modelDropDown.html(html);
        }


0 commentaires