2015-04-07 59 views
3

我使用这个jQuery的功能,通过Ajax获得的数据返回:数据未从阿贾克斯POST

function addContentPrt(cid){ 
    $.ajax({ 
    url: "<?=parseLink('addContent.php')?>", 
    type: "POST", 
    cache: true, 
    dataType:'json', 
    data: {id: cid}, 
    success: function(returnedData){ 
     console.log(returnedData); 
    }, 
    error: function (xhr, tst, err) { 
     console.log(err); 
    } 
    }); 
} 

,并在接收端:

<? 
    header("Content-Type: application/json", true); 

    if(isset($_POST['id'])) { 
    $id = $_POST['id']; 
    } 

    $sql = mysql_query("SELECT * FROM pharmacies WHERE id=$id"); 

    $r = mysql_fetch_array($sql); 
    echo $r['title']; 
    echo $id; 
?> 

echo $id不会返回到AJAX,但不$r['title'] ,并在控制台中执行null。如果我添加一些虚拟文本,如hello world,我得到一个合成器错误SyntaxError: Unexpected token h {stack: (...), message: "Unexpected token h"}

这可能是什么原因,我该怎么做才能修复它?

+4

读变量$r你返回一个字符串,而不是JSON。 –

+0

在你的mysql_fetch_array上添加一个标志MYSQL_ASSOC。否则你不会有数组键作为标题..为了测试更好的print_r($ r);要检查你在$ r – Svetoslav

+0

你有什么,你应该看看json_encode。 – Jai

回答

4
<? 
    header("Content-Type: application/json", true); 

    if(isset($_POST['id'])) { 
    $id = $_POST['id']; 
    } 

    $sql = mysql_query("SELECT * FROM pharmacies WHERE id=$id"); 

    $r = mysql_fetch_array($sql); 
    echo json_encode('id' => $id, 'title' => $r['title']); 
?> 

,并在阿贾克斯成功:

success: function(returnedData){ 
    console.log(JSON.parse(returnedData)); 
}, 
0

在ajax中,您将数据类型指定为json,这是从服务器获得的格式,所以为了获得结果,您需要从服务器返回json结果。通过使用json_encode($ r),其中$ r可以是任何数组。

+0

我这样做,它仍然返回'null' – raccon

+0

...或自己创建数组并将其传回: '$ results = ['id'=> $ id,'title'=> $ r ['title' ]]; echo json_encode($ results);' 哦,你需要提供具体的头文件。检查此主题: http://stackoverflow.com/questions/4064444/returning-json-from-a-php-script – mzografski

+0

你确定$ r ['标题']或$ id是在服务器端设置? –

0

return json_encode($r);那么您可以在sucess