2012-04-06 87 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"}