setTimeout转换为JSON

时间:2015-03-06 19:25:05

标签: javascript jquery json

我将这样的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,其工作......

1 个答案:

答案 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