带有JSON响应的jQuery帖子

时间:2016-01-02 11:51:54

标签: javascript php jquery json ajax

我有这个jQuery代码,它使用$ .post进行Ajax:

g.Count()

和php代码:

$.post(ajax_url , { upload_id: upload_id },
function (response) {
    console.log(response);
    console.log(jQuery.type(response));
}, "json");

并假设控制台打印json代码和json类型 问题是没有在控制台中打印任何东西,这意味着没有响应。

我把它放在Ajax代码中以查看错误:

$data = Array(
'status' => '1',
'msg' => '',
'progress' => '0.24',
'time' =>'<span class="text-white">06:51</span> left (at 21KB/sec)',
'size' => '<span class="text-white">26KB</span> / 10.91MB (0.24%)');

echo json_encode($data);
die();

并且警报是parsererror。

问题是什么?

更新

如果我从ajax代码中删除了.fail( function(jqXHR, textStatus, errorThrown) { alert(textStatus)}); ,则响应会打印类型"json" 和代码string

我需要它json

2 个答案:

答案 0 :(得分:2)

  

在另一个页面中尝试此操作并在控制台中显示。

<?php
if($_POST){
header('Content-type:application/json');
$data = Array(
'status' => '1',
'msg' => '',
'progress' => '0.24',
'time' =>'<span class="text-white">06:51</span> left (at 21KB/sec)',
'size' => '<span class="text-white">26KB</span> / 10.91MB (0.24%)');
echo json_encode($data);
exit();
}

?>
<input type="button" onclick="senddata()" value="send" />
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script> 
function senddata(){
    var upload_id=1
    $.post('test.php' , { upload_id: upload_id },
    function (response) {
    console.log(response.status);
    }, "json");
} 
</script>

答案 1 :(得分:0)

您的服务器是否将数据作为内容类型"*/json"发送?如果没有,请相应地修改响应标头。例如,发送"application/json"就可以了。代码为:header('Content-type:application/json');

另一种可能的解决方案是在你的json url中将'\'切换为'/'。