【问题标题】:json - Jquery return undefined for multiple values in ajax calljson - Jquery 在 ajax 调用中返回未定义的多个值
【发布时间】:2011-07-22 08:41:41
【问题描述】:

我想从 Ajax 调用中返回多个值。所以我根据这个页面修改了我的代码Jquery return multiple values in ajax call

$.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);
     }    
 });

'alert(data)' 返回 {"fullname": "Joe", "success" : "true"}

但是 'alert(data.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

【问题讨论】:

  • 请告诉我您的WebMethod AJAX_GetFullName 返回类型有问题。因为如果WebMethod 正确,alert(data) 应该提醒object Object
  • @ChristopheCVB 数据类型为字符串
  • @naveen 你是对的,返回类型是错误的字符串

标签: json jquery


【解决方案1】:

试试这个。

$.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 );
    }

});

无需在contentType 中指定dataTypecharset

【讨论】:

  • 在两者之间,data.hasOwnProperty("d")返回false
  • 感谢您的帮助。不知道为什么,我不能调用这些函数中的任何一个 $.parseJSON jQuery.parseJSON JSON.parse 调用上述任何函数后,警报将停止工作。太奇怪了。我正在使用 jquery 1.4.2 。有关系吗?
  • 请粘贴您的AJAX_GetFullName方法
  • 已编辑。请参考以上内容。
  • 你是男人,问题解决了。我的错,我不知道是单引号引起的问题。
【解决方案2】:

尝试使用:

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

【讨论】:

  • 运行此行后:data = JSON.parse(data),警报已经停止工作
  • @Alfred:并非所有浏览器都原生支持 JSON。您可能想添加对 ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js 的引用,并且由于您使用的是 jQuery,因此使用 $.parseJSON 会更好
  • 感谢您的帮助。不知道为什么,我不能调用这些函数中的任何一个 $.parseJSON jQuery.parseJSON JSON.parse 调用上述任何函数后,警报将停止工作。太奇怪了。我正在使用 jquery 1.4.2 。有关系吗?
  • 奇怪:添加的版本:1.4.1 - jQuery.parseJSON(json)
【解决方案3】:

要将字符串转换为 Json 对象,请在 Ajax 调用的成功函数中使用 JSON.parse(data) 函数。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多