我将这样的JSON对象与PHP一起转移到JavaScript
header('Content-Type: application/json');
$json['js'] = "setTimer('func()');";
echo json_encode($json);
在JavaScript中:
function setTimer(func) {
setTimeout(function() {
eval(func);
}, 2000);
}
问题在第一次不起作用。它在第二次通话后起作用。
setTimeout
的好方法是什么?
编辑:标题为x-www-urlencode,其工作......
答案 0 :(得分:0)
如果你试图通过ajax从PHP页面get
一个JSON对象,最好不要依赖setTimeout。相反,使用服务器echo
JSON,检索客户端并用于您需要的任何内容。
// server.php
header('Content-Type: application/json');
echo "{\"a\": 1}";
而且,在客户端,
// client.html
<script>
// avoid the use of eval, it's evil. Pass a function as a parameter.
function setTimer(func) {
setTimeout(function() {return func()}, 2000)
}
var request = new XMLHttpRequest();
request.open('GET', 'server.php', true);
request.onreadystatechange = function() {
if(this.readyState === 4 && this.status === 200){
var response = this.response;
// do what you intended.
setTimer(function() { console.log(response) })
}
}
</script>
更多信息:https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHttpRequest