Проблема, возвратив список объектов JSON с AJAX, я не могу согласиться на свойства объекта

Хорошие, у Меня Есть эта Веб услуга:

    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string ObtenirProvinciaByPoblacio(int CodiProvincia)
    {
        clsCRUD _ou2 = new clsCRUD();
        try
        {
            _ou2.Connectar();
            List<clsProvincies> LlistaProvincies = clsDALProvincies.getList(_ou2, CodiProvincia);
            _ou2.Desconnectar();
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string resultat_Json = jss.Serialize(LlistaProvincies);
            return resultat_Json;
        }
        catch (Exception ex)
        {
            throw;
        }

Который возвращает мне список объектов (В этом одиноком случае есть objecto в списке, но не приходит в случай). И в функции ajax у меня есть это:

 $.ajax({
                url: "/WebServiceCV.asmx/ObtenirProvinciaByPoblacio",
                data: "{'CodiProvincia': '" + Codiprovincia + "' }",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {                                          

                    $.each(data, function (index, item) {
                        alert(item);
                    });                  
                },
                error: function (request, status, error) {
                    alert(request.responseText);
                },
                failure: function (response) {
                    alert("arriva al failure");
                }
            });

В alert он показывает мне хорошо объект: [{"Codi":25,"Nom":"LLEIDA"}] Но я не могу никакой формы взять стоимость Codi и Nom чтобы работать с ними. Теоретически он был бы item.Codi или item.Nom правда? Я попробовал несколько выборов, но я ничего не получаю.

4
задан 31.01.2016, 00:09
6 ответов

Уже оно я функционирует, спасибо. cГіdigo останься asГ-:

$.ajax({
                url: "/WebServiceCV.asmx/ObtenirProvinciaByPoblacio",
                data: "{'CodiProvincia': '" + Codiprovincia + "' }",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {                                          
                    var valors = JSON.parse(data.d);
                    $.each(valors, function (index, item) {
                        console.log(item.Codi);
                        console.log(item.Nom);
                    });
                },
                error: function (request, status, error) {
                    alert(request.responseText);
                },
                failure: function (response) {
                    alert("arriva al failure");
                }
            });
0
ответ дан 24.11.2019, 14:56
  • 1
    Привет javier, лучшее состояло бы в том, чтобы ты пометил ответ как правильная, вместо того, чтобы это комментировать. –  rnrneverdies 28.01.2016, 18:39
  • 2
    хорошо ты применил var valors = JSON.parse(data.d); эта линия - ключ, так как ты посылал json как string –  Leandro Tuttini 28.01.2016, 18:42
  • 3
    Est и # 225; хорошо, который ты напечатал c и # 243; mo qued и # 243; c и # 243; я говорю в конце концов для будущей ссылки для других пользователей. Но пожалуйста, пометь ответ, который ты пошел, и #250; til как принятая. –  Konamiman 29.01.2016, 09:26

Если только тебя интересует единственная статья списка, потому что ты не используешь: Такие

List<clsProvincies> LlistaProvincies = clsDALProvincies.getList(_ou2, CodiProvincia);
clsProvincies provincia = LlistaProvincies.First();
_ou2.Desconnectar();
JavaScriptSerializer jss = new JavaScriptSerializer();
string resultat_Json = jss.Serialize(provincia);
return resultat_Json;

Как края, использовав First, () только ты берешь единственную статью, которая была послана клиенту как json.


С другой стороны я вижу, что ты используешь $.each, где ты пробегаешь каждую статью array, который возвращает json, что я не понимаю, таково, как он может состоять в том, что data производит в каждой статье array в месте вместо того, чтобы быть простой статьей.

ты не оценил помещать breakpoint в javascript, чтобы мочь инспектировать контент data? смоги использовать tools browser, чтобы реализовывать это

2
ответ дан 24.11.2019, 14:56
  • 1
    Спасибо за aportaci и # 243; n, я записываюсь это;-) –  Xavier 28.01.2016, 18:45

Ты комментируешь, что "В alert он показывает мне хорошо объект: [{"Codi":25,"Nom":"LLEIDA"}]"

$.each(data, function (index, item) {
    alert(item);
});

Проверяет изменчивую дату, возможно, что возвратили тебе [[{"Codi":25,"Nom":"LLEIDA"}]].

, Если он asГ, - tendrГ-эксперт, который должен помещать item[0].Codi.

2
ответ дан 24.11.2019, 14:56

Несмотря на то, что только он делал бы item.Codi он был бы должен возвращать 25 и с item.Nom имя.

QuedarГ - В asГ - ты cГіdigo:

$.each(data, function (index, item) {
                        console.log(item.Codi);
                        console.log(item.Nom);
});  

DEMO

var data = [{"Codi":25,"Nom":"LLEIDA"}];

$.each(data, function (index, item) {
                        console.log(item.Codi);
                        console.log(item.Nom);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
2
ответ дан 24.11.2019, 14:56

Что происходит, если вместо того, чтобы использовать

var valors = JSON.parse(data.d);

, Ты Возвращаешь uan класс, как json, не последовательно преобразовывая таких

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<clsProvincies> ObtenirProvinciaByPoblacio(int CodiProvincia)
{

    clsCRUD _ou2 = new clsCRUD();

    _ou2.Connectar();
    List<clsProvincies> LlistaProvincies = clsDALProvincies.getList(_ou2, CodiProvincia);
    _ou2.Desconnectar();

    return LlistaProvincies;
}

Как края, ты возвращаешь прямо список, не последовательно преобразовывая в json, ты увидишь, что он возвращает себе прямо список провинций и не string

1
ответ дан 24.11.2019, 14:56

Из-за alert, что ты показываешь ([{"Codi":25,"Nom":"LLEIDA"}]), возвращенный результат - array объектов и не объекта в sГ-. AsГ - что не accederГ-схватывай это с item.Codi и item.Nom а с item[0].Codi и item[0].Nom (sГіlo есть объект asГ - что Г-ndice serГ - в 0)

0
ответ дан 24.11.2019, 14:56
  • 1
    $ .each (он восходит, function (index, статья) {alert (статья [0].Codi);}); - > alert показывает меня " undefinied" –  Xavier 28.01.2016, 18:24
  • 2
    @Xavier ты должен делать debug с console, потому что ты используешь Аякс, это больше alert это не способ debug языка сценариев JavaScript / –  Wilfredo 28.01.2016, 18:26
  • 3
    @Xavier: и #191; Parseas data первый? Сделай data = JSON.parse(data); в начале success. –  Alvaro Montoro♦ 28.01.2016, 18:30