2011-12-19 3 views
0

У меня есть json, который возвращается из функции asp.net. Я только тестирование это так далеко, но то, что у меня есть на данный момент:Итерирование через json массив return from asp.net function

Public Structure myarray 
    Dim name As String 
End Structure 

<WebMethod()> _ 
Public Shared Function temp(ByVal strTerm As String) As String 

    Dim user(1) As myarray 
    user(0).name = "John" 
    user(1).name = "Joe" 

    Dim serializer As New JavaScriptSerializer() 
    Dim arrayJson As String = serializer.Serialize(user) 

    Return arrayJson 

End Function 

и для JQuery У меня есть:

   jQuery.ajax({ 
        type: "POST", 
        url: "default.aspx/temp", 
        data: "{'strTerm':'" + req.term + "'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (data) { 
         var suggestions = []; 
         $.each(data, function (i, val) { 
          //alert(val); 
          suggestions.push(val); 
         }); 
         add(suggestions); 
        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert('unable to create ticket'); 
        } 
       }); 

Что я ищу в

$.each(data, function (i, val) { 
    //alert(val); 
    suggestions.push(val); 
}); 

должен получить каждое из имен, которые я указал, то есть John & Joe и добавить их в массив «предложений». Не уверен, что Json находится в правильном формате для этого.

JSON возвращается в:

[{"name":"John"},{"name":"Joe"}] 

Любые идеи, как это правильный способ сделать это?

Thanks,

ответ

1

Каждый элемент в вашем массиве является объектом json. Поэтому, если вы хотите перетащить имена в массив предложений, вам нужно нажать имя свойства объекта, который будет переименован.

$.each(data, function (i, val) { 
    //alert(val); 
    suggestions.push(val.name); 
}); 

Примечание: Я бы использовать инструмент браузера, как Firebug или Chrome встроенный отладчик, чтобы убедиться, что JSON возвращается и действовал на то, что вы ожидали. По моему опыту, ASP.NET имеет тенденцию обертывать свой ответ JSON в свойстве «d», поэтому вам может понадобиться действовать вместо data.d.

+0

(так же, как указано выше) ... да, я пробовал, но все, что я, кажется, получаю, является «неопределенным», если я должен был предупредить (val.name); вне. Мне интересно, если его структура json ... – thegunner

+0

Вы пытались data.d вместо данных? Как я уже сказал, вполне вероятно, что ASP.NET завершил ответ в свойстве d. – villecoder

+0

Да, попробовал data.d ... не совсем правильно. В основном я пробую эту статью в .net: http://net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-autocomplete-widget/ – thegunner

0

Если вы хотите добавить только имена делает:

suggestions.push(val.name); // The result would be ['John', 'Joe'] 

Я не знаком с осиной, но если вы работаете с данными в JavaScript, то JSON является самым простым способом.

+0

Да, я пробовал, но все, что я, кажется, получаю, является «неопределенным», если я должен был предупредить (val.name); вне. Мне интересно, если его json-структура ... – thegunner

+0

проверяет структуру 'data' на' console.log (data) 'и пользовательский JavaScript-консоль Chrome или Firebug. –

+0

проверьте, что на самом деле возвращается JSON. В hrome dev-tool есть раздел сети, где см. ответы и заголовки на основе http-запроса. –

Смежные вопросы