jQuery:在成功之前显示发布数据

时间:2012-02-12 16:40:24

标签: jquery

我不太确定如何说出搜索,或者用我想要的东西寻找什么。基本上,我想设置一个div来显示使用jQuery从post / get返回的数据,类似于windows命令提示符中的旧批处理文件。

function run_cache() {

  $.get("/run_cache.php", function(data) {  
    $('#update_div').html(data);  
  });   
  return false;

}

这是基本代码。在run_cache.php里面它做了一些事情,然后回显了一些文字。我希望在回显后显示文本。现在简单的jQuery代码只会在脚本运行完毕后发布数据,并发布所有回显的数据。

有没有办法发布数据?就像,在php文件完成之前。

示例:

run_cache.php执行某些操作并回显'Set 1 Complete'。 div以“Set 1 Complete”更新。 run_cache.php执行其他操作,并回显'Set 2 Complete'。 div文本然后更改为“Set 2 Complete”。知道我的意思吗?

这可以在jQuery中做到吗?或者只有在获取/发布表单完成后才能发布数据?

2 个答案:

答案 0 :(得分:1)

如果没有请求,您将无法将消息发送回客户端,这意味着您必须按步骤发出请求,以便能够在每个集合或“批处理”时更新页面完成。第一步是要求找出需要完成多少“步骤”。然后进行单独调用以请求执行步骤...递归调用相同的函数来执行下一步。

var set_count = 0;
function get_set_count() {
   $.get("/get_set_count.php", function (data) {
      // populate the set_count variable from the returned data. could be xml or json. 
      // your choice.
      set_count = $(data).find('set_count').val();

      if (set_count > 0) {
        // kickoff the process, requesting set number 1.
        run_cache(1);
      } else {
        $('#update_div').html("No sets found.");
      }
  });
  return false;
}

function run_cache(set) {
  var url = "/run_cache.php?set=" + set;

  $.get(url, function (data) {
    $('#update_div').html(data);

    if (set < set_count) {
        // recursively request the next set.
        run_cache(set + 1);
    }
  });
  return false;
} 

现在我考虑一下 - 你可以通过让run_cache.php返回两个数据:刚刚完成的集合和下一个集合数字来摆脱初始的get_set_count()调用。

答案 1 :(得分:0)

您可能想尝试使用jQuery's AJAX functions这样的内容(数据的格式取决于服务器发回的内容):

function run_cache() {
  $.ajax({
    url: '/run_cache.php',
    beforeSend: function() {
      // do something before sending data to server
    },
    success: function(data) {
      $('#update_div').html(data);
    }
  });
}