2013-04-04 52 views
1

我有一个搜索框,在用户点击提交按钮的同时加载结果页面时,我想显示某种进度指示器。这个简单的我能找到的是:如何在页面加载后继续检查PHP条件

while ($something == true) { 
    // Echo an extra dot, and flush the buffers 
    // to ensure it gets displayed. 
    echo ' .'; 
    flush(); 

    // Now sleep for 1 second and check again: 
    sleep(1); 
} 

我会想象$的东西应该是简单的用户是否已经提交搜索表单呢。问题在于上面的PHP代码不会知道,因为页面已经完成加载。

如何让PHP只在用户提交搜索表单后才能执行?

回答

3

你不能。你需要使用JavaScript(也可能是AJAX与服务器端代码交互)

1

PHP是一种服务器端语言,所以它无法看到浏览器中发生了什么。我只会回应浏览器发出的请求。有两种方法可以实现我认为你以后的目标。

阿贾克斯方式:
有某种的现场反馈,您将需要一个客户端的语言,至极会的JavaScript。我建议你看看jQuery,这是一个JavaScript库,它很容易理解。更多specificly你也将需要在$.ajax方法和.submit事件probabaly

PHP的方式:
你也可以有你的形式提交给同一个PHP页面的搜索表单,然后检测羯羊形式已经通过检查表单变量是否存在提交。事情是这样的:

if (array_key_exists('search', $_REQUEST) { 
// the form has been submitted 
} 
else { 
// the form is not yet submitted 
} 

即假设的搜索框表单的名称为“搜索”

0

使用jQuery:

$('#submit').click(function(e)){ 
    e.preventDefault(); 
    $.ajax({ 
     type: "POST", 
     url: "path/to/php/action", 
     dataType: "json" 
    }).done(function(data){ 
     while(data.action == 'waiting'){ 
      $('.somePageClass').html('<p>...</p>'); 
     }else{ 
      $('.somePageClass').html('your results'); 
     } 
    }); 
}); 

类似的东西,使用Ajax调用PHP函数,你的php函数将不得不检查你是否在等待或完成并返回data.action。

这可能不完全正确,但它是一个尝试(至少在正确的方向)。

+0

URL参数是什么?我没有其他页面正在执行脚本。这只是简单地检查点击提交按钮。路径是什么?我认为这就是我有点失落......谢谢! – devirkahan 2013-04-15 21:47:32

相关问题