2013-03-05 96 views
0

我有一个简单的Ajax调用PHP的JSON响应。我多次写过这些内容,但从未遇到过这个问题。ajax JSON返回null

Ajax通过“id”参数发送罚款,PHP收到它,它是否工作并返回json响应,这是问题开始的地方。其中一个参数始终为空,因为我似乎无法找到的原因。我已经手动测试了PHP,并且它返回了这两个值。我已经检查过ajax,看看它是否恢复了id参数。所以这个问题是在json响应被发送的地方,jquery ajax接收到的。

// This gets the paramaters from the url 
theParams = parseURLParams(document.URL); 

// ^^ it returns an id, like this {"id":"4a17bcb93fe3fac3978671a66959d902"} 

$.ajax({ 
    url: 'viewer_code.php', 
    type: 'GET', 
    dataType: 'json', 
    data: {id: theParams.id}, 
    success: function(dataImg) { 

    alert(dataImg.imgUrl); 

    } 
}); 

和PHP(一切似乎罚款&都将被消毒)

$id = $_GET['id']; 

    $q = "SELECT * FROM `images` WHERE id = '$id'"; 
    if(!($result_set = mysql_query($q))) die(mysql_error()); 
     $row = mysql_fetch_array($result_set); 

     $thumb = $row['thumb']; 
     $image = $row['image']; 

     header('Content-Type: application/json'); 
     echo json_encode(array("imgUrl" => $image, "id" => $id)); 

当PHP是手动测试,它返回:{ “imgUrl的”: “照片/ 75de7c1c30d956113f937a8e685f7e50.jpg” “id”:“4a17bcb93fe3fac3978671a​​66959d902”}

这是总是返回null的imgUrl,任何人都知道为什么会发生这种情况? 哦,我已经尝试从GET切换到POST,因为以前的问题已经建议,但它没有任何区别。

提前非常感谢您的帮助,欢呼家伙:)

+0

你有没有尝试过使用print_r或其他东西来回应数组的值,而不是将它作为json发送,以确保ajax请求获得正确的值。 – Pitchinnate 2013-03-05 16:44:32

+0

您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http://php.net/manual/en/ mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin 2013-03-05 16:47:26

回答

1

你有没有使用id: 1我有一个很大的问题试图处理那些不正确的JSON变量尝试id: theParams.id代替。

在另一方面,我做了类似的代码,但没有

header('Content-Type: application/json'); 

有你在你的PHP文件echo json_encode(array("imgUrl" => 'image.jpg', "id" => '1'));尝试根据这些测试也许我可以帮助你更

+0

似乎没有帮助,但我会通过一些测试运行,并将它们放在这里: – 2013-03-05 17:08:51

+0

测试一:输出:改变回声json_encode(array(“imgUrl”=> $ image,“id”=> $ id) ); to:echo json_encode(array(“imgUrl”=>“image.jpg”,“id”=> $ id)); < - 没有工作,所以可能没有输出?现在运行另一个测试 – 2013-03-05 17:10:26

+0

只需运行一个测试,当我拿走DataType时返回的内容:'json'。这回来了: {“imgUrl”:null,“id”:[“4a17bcb93fe3fac3978671a​​66959d902”]} < - 可能与[]有关? – 2013-03-05 17:15:54