2014-11-22 212 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); 
    } 
    });