2014-11-22 103 views
0

我有一个Ajax调用:AJAX返回数据jQuery的

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出来,警报显示未定义。
这并不是必须被序列化吗?我有这个功能在另一个项目上运行良好,但我不知道为什么这不起作用。

+2

这是一个格式不正确的JSON响应? – Scimonster 2014-11-22 20:01:13

+0

你可以显示“数据”对象的内容吗? – 2014-11-22 20:02:40

+0

{“fname”:“Jeff”,“lname”:“coldwell”,“role”:“1”}是响应 – 2014-11-22 20:06:56

回答

0

添加数据类型:“JSON”似乎解决这个问题,但直到我偶然重新扫描代码,看看,我已经remmed它出。

1

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

您应该改用JSON。

因为你正在请求PHP脚本,像这样做:

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

使用dataType: "json"作品,我不知道我怎么忘了。

+0

考虑到数据中的问题没有'{',否','和否}},迫使jQuery忽略内容类型(如果'dataType:“json”有所作为,它肯定是错误的)将无法修复它。 – Quentin 2014-11-22 20:13:42

+0

@Quentin在问题的下面看到OP的评论:回应是'{“fname”:“Jeff”,“lname”:“coldwell”,“role”:“1”}'。 – jeroen 2014-11-22 20:28:19

-1

根据您对下面有关响应的问题的评论,目前还不完全清楚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); 
    } 
    });