我在使用json_encode
函数时遇到问题。我在这里放了一个简化版本的问题。这是包含php和jquery代码的文件。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>
<?php
$test = "xxxxxxx";
?>
<p onclick="testAjax()">Click here</p>
<script>
var sendbody;
function testAjax(){
sendbody = "<?php echo json_encode($test); ?>";
$.ajax({
type: 'POST',
cache:false,
url: 'testAjaxCall.php',
data: {sendbody:sendbody},
success:function(data){
alert("1");
},
error:function(data){
alert("0");
}
});
}
</script>
而 ajax 文件只包含
<?php
echo "testAjax";
?>
当我使用json_encode
函数时,使用 json_encode 函数后编写的 jquery 代码停止工作,ajax 函数既不显示成功消息也不显示错误消息。但是,如果我把它写成
sendbody = "<?php echo $test; ?>";
在这种情况下,此行下方的 jquery 代码有效并显示成功消息。
使用 json_encode
时,您不必引用结果,它已经被引用了。
所以改变
sendbody = "<?php echo json_encode($test); ?>";
自
sendbody = <?php echo json_encode($test); ?>;
否则你会得到:
// this cause syntax error
sendbody = ""xxxxxxx"";
首先,每当您期望将 JSON 返回到 AJAX 调用时,您必须通过设置 dataType: 'json',
告诉它,如果没有,它会尝试将其处理为文本并且显然失败(您的调用成功,但响应的处理不是)。下一个最好的办法是使用console.log(data)
来更好地了解响应。