我有这个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
答案 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中将'\'切换为'/'。