我正在创建一个在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调用返回数据吗?
答案 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
被视为不良做法,因为它可以覆盖您的网页。
以下是您需要做的事情:
创建一个带有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);
}
});
}