2011-07-22 6 views
1

Ajax呼び出しから複数の値を返したいとします。だから私は、このページJquery return multiple values in ajax calljson - Ajax呼び出しで複数の値がJQueryから返される場合があります。

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "AJAX_custom_function.aspx/AJAX_GetFullName", 
    data: '{userid: "' + arguments.Value + '"}', 
    dataType: "json", 
    async: false, 
    success: function (data) { 
     alert(data); 
     alert(data.fullname);  
    }, 
    error: function (httpRequest, textStatus, errorThrown) { 
     alert("status=" + textStatus + ",error=" + errorThrown); 
    }  
}); 

'警告(データ)' 戻り値{: "ジョー"、 "成功": "フルネーム" "真"}に基づいて自分のコードを修正

しかし、「警告(データ.fullname) 'は未定義を返します。正しい値はJoeにする必要があります

私に何か不足していますか?どんなアドバイスも大歓迎です。

AJAX_GetFullName

<System.Web.Services.WebMethod()> _ 
Public Shared Function AJAX_GetFullName(ByVal userid As String) As Object 

    Dim isValid As Boolean = False 'by default, user always not exist 
    Dim strFullName As String = "" 

    isValid = IsUserIDExist(userid, strFullName) 
    If isValid Then 
     Return "{'fullname': '" & strFullName & "', 'success': 'true' }" 
    Else 
     Return "{'fullname': '', 'success': 'false' }" 
    End If 

End Function 
+0

データの種類は? – ChristopheCVB

+0

あなたの 'WebMethod'' AJAX_GetFullName'を返してください。戻り値の型に何か問題があります。なぜなら、 'WebMethod'が正しい場合、alert(data)は' object Object'を警告しなければならないからです。 – naveen

+0

@ChristopheCVBデータ型は文字列です – Alfred

答えて

2

これを試してみてください。

$.ajax({ 
    type: "POST", 
    contentType: "application/json;", 
    url: "AJAX_custom_function.aspx/AJAX_GetFullName", 
    data: '{"userid": "' + arguments.Value + '"}', 
    async: false, 
    success: function (data) { 
     try { 
      // convert single quote to double quotes 
      var msg = data.replace(/'/g, "\""); 
      msg = $.parseJSON(msg); 
      alert(msg.fullname); 
     } catch (e) { 
      alert(e.Message); 
     } 
    }, 
    error:function (xhr, status, err){ 
     alert("status=" + xhr.responseText + ", error=" + err); 
    } 

}); 

contentTypedataTypecharsetを指定する必要はありません。

success: function(data) { 
    if (typeof data == 'string') 
    { 
     data = jQuery.parseJSON(data); 
    } 
    alert(data.fullname); 
} 
+0

それでも未定義が返されます。 – Alfred

+0

その間に、data.hasOwnProperty( "d")にfalseが返されます – Alfred

+0

ありがとうございました。 わからない、なぜ、私は任意の上記の関数を呼び出した後 $ .parseJSON jQuery.parseJSON JSON.parse アラートが動作を停止しますこれらの関数を呼び出すことはできません。とても奇妙。 jquery 1.4.2を使用しています。それは問題ですか? – Alfred

1

を使用してみてください。これが助けてくれるといいなあ

+0

+1 for JSON.parse。 –

+0

私はこの行を実行した後:data = JSON.parse(data)、アラートはすでに動作しています – Alfred

+2

@Alfred:JSONはすべてのブラウザでネイティブにサポートされていません。 http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.jsへの参照を追加することができます。また、jQueryを使用しているので、 '$ .parseJSON'を使用する方がはるかに良いでしょう。 – naveen

0

をAjax呼び出しの成功関数の中でJSON.parse(データ)関数を使用するJSONオブジェクトに文字列を変換するには:

関連する問題