1

我有一个搜索框,当用户在加载结果页面时点击提交按钮后,我想显示某种进度指示器。我能找到的最简单的是:

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);
}

我想 $something 应该只是用户是否已经提交了搜索表单。问题在于上面的 PHP 代码不会知道这一点,因为页面已经完成加载。

只有在用户提交搜索表单后,我才能让 PHP 执行?

4

3 回答 3

3

你不能。您需要为此使用 JavaScript(可能还有 AJAX 与服务器端代码交互)

于 2013-04-04T18:00:43.347 回答
1

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

ajax 方式:
要获得某种实时反馈,您将需要一种客户端语言,即 Javascript。我建议你看看jQuery,一个相当容易理解的 javascript 库。更具体地说,您可能需要$.ajax方法和.submit事件

PHP方式:
您也可以让您的表单提交到搜索表单所在的同一php页面,然后通过检查表单变量是否存在来检测表单是否已提交。像这样的东西:

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

那是假设您表单中的搜索框的名称为“搜索”

于 2013-04-04T18:05:55.027 回答
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。

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

于 2013-04-04T18:08:29.770 回答