[英]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
被認為是不好的做法,因為它可能會覆蓋您的頁面。
這是您需要做的:
創建一個具有ID的空DIV。
考慮到您的輸出來自受信任的源,請使用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.