2

下面的函数抓取一个 php 页面,然后每 5 秒重新加载一次。唯一来自该roomdata.php页面的是带有颜色名称(蓝色、黄色等)的字符串。我希望能够在函数中使用该名称modifyLight(color),但它不允许我这样做。我不知道为什么,但无论我尝试了什么,它都不会将变量数据视为字符串,即使我将其澄清为一个字符串。

任何帮助表示赞赏,谢谢!

$(function(){
  function loadData()
  {  
    var data = load('roomdata.php');
    modifyLight(data);
    setTimeout(loadData, 5000); // makes it reload every 5 sec
  }
  loadData(); // start the process...
});
4

1 回答 1

0

您正在使用异步 ajad 调用。您需要将您的请求配置为同步。

 $.ajax(URL, {async : false});

这样,下一行的执行将一直执行到 ajax 请求完成为止。

编辑

你的功能应该是这样的:

$(function(){
  function loadData() {
     $.post("roomdata.php", function(result) {
        modifyLight(result);
        setTiemout(function() { loadData(); }, 5000);
     }  
  }
  loadData(); // start the process...
});

您这样做的方式的问题是$.load();仅使用 Ajax 加载某些内容并将内容放在$('#yourdiv');它不返回任何内容。您需要一个 ajax 请求,其中包含“成功”事件中的某些内容。在我给你的代码中,$.post通过 post 发出一个 ajax 请求roomdata.php,然后,一旦 ajax 完成,它就会执行函数function(result) { ... }

于 2013-03-16T01:33:48.003 回答