2011-12-19 2 views
0

私はasp.net関数から返されているいくつかのjsonを持っています。私は今のところこれをテストしたが、私は現時点で持っていることはあるんだ:asp.net関数からのjson配列のリターンを繰り返します。

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"}] 

任意のアイデアどのようにこれを行うには正しい方法ですか?

ありがとう、

答えて

1

あなたの配列の各項目はjsonオブジェクトです。したがって、名前を提案配列にプッシュする場合は、反復処理されるオブジェクトのnameプロパティをプッシュする必要があります。

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

:私はJSONが返され、あなたが期待しているものであるが作用していることを確認するために、Firebugのか、Chromeのデバッガに建てられたようなブラウザツールを利用すると思います。私の経験では、ASP.NETは 'd'プロパティでJSONレスポンスをラップする傾向があるため、データの代わりにdata.dを処理する必要があります。

+0

(上記と同じです)...ええ、私は試しましたが、私が(val.name)を警告するならば、私が得意とするのは「未定義」です。でる。私はそれがjsonの構造かどうか疑問に思っています... – thegunner

+0

データの代わりにdata.dを試しましたか?私が言ったように、ASP.NETがdプロパティで応答をラップしている可能性があります。 – villecoder

+0

データを試してみました。基本的に私はネットでこの記事を試しています: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'] 

私はASPに慣れていないんだけど、あなたはJavaScriptでデータを扱う場合は、JSONは、最も簡単な方法です。

+0

ええ、私は試みましたが、私が(val.name)を警告するならば、私が得るように見えるのは「未定義」です。でる。私はそれがjson構造であるかどうか疑問に思っています... – thegunner

+0

'console.log(data)'で 'data'の構造を検査し、chromeまたはfirebug JavaScript-consoleを使用します。 –

+0

実際に返されるJSONを確認します。 chrome dev-toolにはネットワークセクションがあり、httpリクエストに基づいてレスポンスとヘッダーを表示します。 –

関連する問題