2012-04-06 127 views
0

我正在使用$.getJSON jQuery函數來允許我的網站與不同域中的服務器進行交互。但是,我一直在修復導致第三個和第四個數據項爲undefined的錯誤。我不確定問題出在哪裏。JSON數組缺失元素

的JavaScript:

$.getJSON(domain_path + 'display.php?url=' + purl + '&callback=?', function(data) { 

     var username = data['uname']; 
     var point = data['point']; 
     var email = data['email']; 
     var title = data['title']; 

}); 

emailtitleundefined,但unamepoint是正確的。

JSON是這個PHP產生:

$url = mysql_real_escape_string($_GET['url']); 
$result = mysql_query("SELECT * FROM user url='$url'")or die(mysql_error()); 
$row = mysql_fetch_array($result); 
if($row){ 

    $uname = $row['uname']; 
    $point = $row['point']; 
    $email = $row['email']; 
    $title = $row['title']; 

    $output = array('uname'=>$uname,'point'=>$point,'email'=>$email,'title'=>$title); 
    $out_string = json_encode($output); 
    echo $callback.'('.$out_string.');'; 
} 

JSON結果是這樣的:

284927410({"uname":"john","point":"104","email":"[email protected]","title":"teacher"}); 

我能夠得到john104,但emailtitle拿出undefined當我把他們在alert()

我有遺漏一些規則嗎?或者代碼中有什麼錯誤?

+0

你的代碼看起來正確的給我。一切都應該按預期工作 – 2012-04-06 09:04:57

+0

嘗試console.log(數據)在js – user1303559 2012-04-06 09:09:36

+0

側注意:您不需要重建'$ output'變量。只要做'$ out_string = json_encode($ row);' - 另外,在JS中我使用'data.title'而不是'data ['title']' - 不要認爲它們有區別,但可能它值得嘗試。 – Dutchie432 2012-04-06 09:27:49

回答

0

我複製你的環境,一切都使用此代碼工作正常:

$.getJSON("http://localhost:8081/test", function(data) { 
     alert(data.uname); 
     alert(data.point); 
     alert(data.email); 
     alert(data.title); 
    }); 

所在路徑http://localhost:8081/test只返回 {"point":"104","title":"teacher","email":"[email protected]","uname":"john"}