AJAX 将数据返回给 jquery

AJAX return data to jquery

本文关键字:jquery 返回 数据 AJAX      更新时间:2023-09-26

我有一个ajax调用:

jQuery.ajax({
        type: "POST", // HTTP method POST or GET
        url: 'inc/functions.php?func=get_usr&id='+usr, //Where to make Ajax calls
        success:function(data){
            if (data.fname) {
             var fname = data.fname;
             //alert (fname);
            $('#rname').text(fname);
            }
         },
        error:function (xhr, ajaxOptions, thrownError){
           alert(thrownError);
        }
        });

数据返回:

fname: "test_fname"
lname: "test_lname"
role: "1"

问题是我可以fname摆脱它,警报显示未定义。
这不必序列化是吗?我在另一个项目中有这个功能运行良好,但我无法弄清楚为什么它不起作用。

你没有在jQuery知道如何解析的数据结构中返回数据。 data将是一个字符串,因此它不会具有您尝试读取的属性。

您应该改用 JSON。

由于您正在向 PHP 脚本发出请求,因此请按照以下步骤操作:

header("Content-Type: application/json");
print json_encode(Array(
    "fname" => "test_fname",
    "lname" => "test_lname",
    "role" => "1"
));

添加数据类型:"json"似乎解决了这个问题,直到我碰巧重新扫描代码才发现我已经将其删除了。

根据您在有关响应的问题下方的评论,目前还不完全清楚data确切内容是什么,但也许 json 尚未解析。

您可以使用以下dataType自动执行此操作:

jQuery.ajax({
    type: "POST", // HTTP method POST or GET
    url: 'inc/functions.php?func=get_usr&id='+usr, //Where to make Ajax calls
    // here
    dataType: 'json',
    success:function(data){
        if (data.fname) {
         var fname = data.fname;
         //alert (fname);
        $('#rname').text(fname);
        }
     },
    error:function (xhr, ajaxOptions, thrownError){
       alert(thrownError);
    }
    });

使用dataType: "json"作品,我不知道我是如何忘记它的。