说,我有一个像这样的php文件:
<?php
echo 1;
//some functions
echo 2;
//more code to execute
echo 3;
?>
我有一个HTML表单。所以我想要的形式是在PHP脚本执行时在某些文本字段中打印回声,是否可以使用AJAX和JQuery?
我想要的是用户进入HTML页面,按下一些按钮,这个按钮运行PHP脚本,每次脚本到达回声时他都可以在文本字段中看到这个回声。一旦脚本结束 - 我想做一些JQuery动作,例如hide按钮。可能吗?概述算法是什么?谢谢!
更新的:
我需要在用户按下按钮时运行此脚本ONCE,但每次脚本到达下一个回显时更新文本字段,以便用户按下按钮一次,而不是在文本字段中看到“1”,在一秒钟内他将看到“2”,在几秒钟 - “3”。
答案 0 :(得分:9)
不幸的是,由于success
的{{1}}处理程序仅在请求完成后才会被调用,您无法执行“实时更新“.. :(
您所能做的就是在会话中保存当前状态,在每个回显处结束脚本并重新请求页面继续。
答案 1 :(得分:2)
您可以使用两种方式将响应返回为json
$values = array();
$values['first'] => 1;
$values['second'] => 2;
$values['third'] => 3;
print json_encode($values);
并在客户端jquery success
处理程序
$.ajax({
url: 'yoururl',
type:'POST',
data :'{ if any }'
dataType:'json', /*most important**/
success:function(data){
console.log(data.first); //first value..etc
}
});
第二种方法
在服务器端附加返回数据
$return= '';
$return.=1."||";
$return.=2."||";
$return.=3;
echo $return;exit;
和ajax
$.ajax({
url: 'yoururl',
type:'POST',
data :'{ if any }'
success:function(data){
console.log(data.split("||")[0]); //first value..etc
}
});
});
答案 2 :(得分:1)
您可以返回PHP为您创建的JSON字符串:
$values = array();
$values['first'] => 1;
$values['second'] => 2;
$values['third'] => 3;
print json_encode( values );
将此响应存储在JavaScript变量中,并使用它的值在特定时间更新:
var obj = jQuery.parseJSON( response );
// as an example - to see where this goes
setTimeout(function() { $('#example').html(obj.first); }, 1000);
更多信息:
答案 3 :(得分:1)
使用两个php
脚本的另一种解决方案:
javascript
中的客户端将调用第一个脚本来启动主作业。然后调用第二个脚本来检查并显示进度。
检查会话的第二个脚本可以用两种方式编写:
第二种解决方案更接近“实时”,并且会进行更少的ajax
次呼叫。
答案 4 :(得分:0)
选项是使用WebSockets,它将允许PHP和Javascript之间的“实时”通信。
原生WebSockets仅受更新版本的现代浏览器支持,但有一些方法可供旧浏览器使用ajax / iframe / flash
来模拟例如,socket.io客户端可以使用Internet Explorer 5.5。