Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX将数据返回到jquery_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript AJAX将数据返回到jquery

Javascript AJAX将数据返回到jquery,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个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 = da

我有一个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知道如何解析的数据结构中的数据<代码>数据将是一个字符串,因此它不会具有您试图读取的属性

您应该改用JSON

由于您正在向PHP脚本发出请求,请按如下方式执行:

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

使用
数据类型:“json”
有效,我不知道我是怎么忘记的。

根据您在下面关于回复问题的评论,不完全清楚
数据的确切内容是什么,但可能json还没有被解析

您可以使用
数据类型自动执行此操作:

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

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

这是一个格式错误的json响应吗?你能显示
数据
对象的内容吗?{“fname”:“Jeff”,“lname”:“coldwell”,“role”:“1”}是响应(facepalm)数据类型:“json”,忘记添加问题中给定的数据(no
{
、no
和no
}
)强制jQuery忽略内容类型(如果`dataType:'json'起作用,这肯定是错误的)将无法解决问题。@Quentin在问题下方看到OP的评论:响应是
{“fname”:“Jeff”,“lname”:“coldwell”,“role”:“1”