一个ajax请求,多个响应?

时间:2011-11-08 04:22:07

标签: php javascript ajax

好的,这就是我正在做的事情。看看下面的php和java脚本脚本

PHP

ini_set("soap.wsdl_cache_enabled", "0"); 

$client = new SoapClient("server/test.wsdl");  

$origtext = array('user'=>$_GET['pointname']); 
$lastmodif    = isset($_GET['timestamp']) ? $_GET['timestamp'] : 0;
$currentmodif = $client->getTime($origtext)->{"timest"};

while ($currentmodif <= $lastmodif) // check if the data file has been modified
{
  // sleep(1);
  usleep(10000); // sleep 10ms to unload the CPU
  clearstatcache();
  $currentmodif = $client->getTime($origtext)->{"timest"};
}

$response = array(); 
$response['msg']       = $client->getMobile($origtext)->{"phone-num"};
$response['timestamp'] = $currentmodif;

echo json_encode($response); 

flush();

的Javascript

var timestamp = 0;
var pointname = "test1";
var noerror = true;

function wait() {
    $.ajax({
        type: "GET",
        url: "backend.php",
        data: "timestamp=" + this.timestamp + "&pointname=" + pointname,
        success: function (transp) {
            var response = eval('(' + transp + ')');
            timestamp = response['timestamp'];
            $("#page1b").html(response['msg']);
            $("#page1c").html(timestamp);
            noerror = true;
        },
        complete: function (transp) {
            if (!noerror) setTimeout(function () {
                wait()
            }, 5000);
            else wait();
            noerror = false;
        }
    });
}
wait();

一旦ajax请求被触发,服务器端将执行while循环检查时间值,直到时间发生变化,然后它会将新值回显给客户端并显示在网页上。(这一切都会自动完成) ,并没有太多的内存消耗在客户端)我的最终目标是建立一个内部100值的表,发射100 ajax请求显然是不可能的。我想分开处理这些值,但都共享相同的php脚本,这意味着每个值只会在更改时发生更改而不受其他值的影响,但只需要上面显示的一个php脚本。任何建议?

1 个答案:

答案 0 :(得分:1)

不,你不能。在较旧的浏览器中,这是可能的,并且甚至有JQuery plug-in来促进它,但是较新的浏览器仅在收到整个请求时触发事件,并且不允许您在此之前读取部分响应。 / p>