簡體   English   中英

如何從ajax調用返回數據到php

[英]how to return data from ajax call to php

我正在制作一個在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調用返回數據嗎?

如果要從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);

document.write被認為是不好的做法,因為它可能會覆蓋您的頁面。

這是您需要做的:

  1. 創建一個具有ID的空DIV。

  2. 考慮到您的輸出來自受信任的源,請使用innerHTML編寫對DIV的響應,因為innerHTML可以輸出文本,而且可以輸出HTML。

您的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);
   }
});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM