如何将数据从ajax调用返回到php

时间:2017-11-03 18:00:40

标签: javascript php jquery ajax

我正在创建一个在PHP中调用JS函数的应用程序

$data = "<script>JSFunction();</script>";

和JSFunction看起来像这样

function JSFunction(){
$.ajax({
    type: 'POST',
    url:'url/to/file',
    data:{'text':"some text here"},
    success:function(response){
        res = JSON.parse(response);
        document.write(res.data);

    },
    error: function(err){
        console.log(err);
    }
});
}
php中的

$data变量获得了预期的结果。但是当我echo $data;时,数据会打印在屏幕上,但浏览器页面会继续重新加载。 (它实际上没有重新加载,但浏览器标签中的那个圆圈不断出现旋转)。那我怎么能停止重装呢?或者除了document.write()之外还有其他方法可以从ajax调用返回数据吗?

2 个答案:

答案 0 :(得分:0)

如果您想从PHP脚本获取JSON结果,可以使用正确的 dataType 调用ajax:

$.ajax({
        type: "POST",
        url: "url/to/script",
        dataType: 'json',
        success: function (data) {
            $.ajax({
                    type: "POST",
                    url: "url/to/php/script",
                    dataType: 'json',
                    data: {data: data},
                    success: function (data) {
                        // do something...
                    }
            })
        }
    })

不要忘记使用带有正确标题的 json_encode 编码PHP脚本中的$ data:

header("Content-Type: application/json");
echo json_encode($data);

答案 1 :(得分:0)

document.write被视为不良做法,因为它可以覆盖您的网页。

以下是您需要做的事情:

  1. 创建一个带有ID的空DIV。

  2. 使用innerHTML将响应写入DIV,因为您的输出来自可靠来源,因为innerHTML可以输出HTML而不仅是文本。

  3. 您的PHP:

    <div id ="x"></div>
    
    <?php $data = "<script type='text/javascript'>JSFunction();</script>";
    echo $data;
    ?>
    

    你的JS:

    function JSFunction(){
       reValue = document.getElementById("x");
    
       $.ajax({
       type: 'POST',
        url:'url/to/file',
        dataType:'json',
        data:{'text':"some text here"},
        success:function(response){
        x.innerHTML = response.data;
    
       },
        error: function(err){
        console.log(err);
       }
    });
    }