使用jquery $ .post多个php返回值

时间:2013-03-30 04:27:59

标签: php jquery-post

我真的不知道如何问这个,这就是我在这里问的原因。所以如果我使用这样的代码:

$.post("/data/something.php", {stuff: 'hi'}, function(data){
$('#box').html(data);
});

通常情况下,如果您有这样的PHP,您只能得到1个结果:

<?php echo $_REQUEST['stuff'] ?>

我想知道php是否有任何方法可以发送一些数据,然后再稍微没有它只是像这样一次发送所有数据:

<?php 
echo 'Foo';
//Do stuff that takes time
echo 'Bah';
?>

3 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标。

第一个使用flush命令(http://php.net/manual/en/function.flush.php)的标准工作流程。这意味着你可以这样做:

echo "Starting...\n"
flush();
// do long task
echo "Done!\n"

但是:这通常是行不通的。例如,如果您的服务器使用deflate,则在请求完成之前,Starting可能不会被发送。许多其他因素也可能导致这种情况(代理,浏览器行为)。

更好的选择是使用轮询机制。您的主脚本会将其进度写入文件(具有一些与会话ID相关的文件名),然后在完成后删除该文件。然后,您将添加第二个脚本来报告此文件中的进度(或者如果文件已被删除则完成),并且您的JavaScript将向此检查器脚本发送AJAX请求(可能每两秒钟一次)。

答案 1 :(得分:0)

在PHP中

<?php 
    echo 'Foo';
    echo '||||';
    echo 'Bah';
?>

在Javascript中

var responses = data.split('||||');

//you will get 
//Foo in responses[0]
//Bar in responses[1]

答案 2 :(得分:0)

我希望php没有问题(如@Dave所详述)。复杂的部分是javascript在传输完成之前检索数据的第一部分......

我认为您所要求的内容在此处得到解答:Is it possible for an AJAX request to be read before the response is complete?

  

实现此目的的方法是通过侦听xhr对象中的readyState。当readyState == 3时,表示新内容已到达,您可以访问它。该技术被称为Comet。

和...

  

所以最后,是的,这是可能的,不是不容易。