PHP json_encode数据到 jQuery for AJAX 调用


PHP json_encode data to jQuery for AJAX call

我在使用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)来更好地了解响应。