【问题标题】:Javascript - check data one by one - Jquery post()Javascript - 一项一项检查数据 - Jquery post()
【发布时间】:2012-11-02 14:03:19
【问题描述】:

在我的本地服务器上,一切正常,但是当我将脚本上传到我的网络服务器并运行脚本时,我收到一条 php - mysql 错误消息:连接太多。

我正在尝试向$.post(); 函数插入延迟,但我不知道如何。

var videoArrays = new Array();

videoArrays[0] = '34hgfj23rj';
videoArrays[1] = '2kj4mfwjmhkg';
videoArrays[2] = '23kjrmkf4ekjf';
...
videoArrays[152] = '3ok4jtmfj324hfh';

for(var i in videoArrays){
   $.post('get_data.php', { v_data : videoArray[i] },
   function(data){
      if(data == 'exists'){
         alert('Data exists in data base !');
      }
      else alert('Invalid data !');  
   });
}

我收到错误,因为我在 3 秒内打开/关闭了许多连接(152 个不同的连接)!

我需要添加延迟,但在哪里或如何...我不知道。

【问题讨论】:

  • 可能是显而易见的,但为什么不保持连接打开,运行所有代码并在之后关闭它,通过在一个请求中发布 videoArrays。
  • 我基本上同意@PaulGrimshaw - 您应该让服务器上的 API 接受名称列表,并且它应该返回一个地图,指示哪些可用或不可用。 (是的,对不起,我还在做我的第一杯咖啡:-)
  • 我没有关闭与mysql的连接('get_data.php'),我只包含了'config.php'进行连接。
  • 我不知道如何使用 jQuery,但使用常规 javascript,您可以将加载事件侦听器附加到您的 POST 请求。您可以侦听响应,然后迭代到下一个请求。 'ajaxrequest.addEventListener('load', handleload, false);'

标签: javascript jquery post


【解决方案1】:

您需要创建某种队列,以便控制一次有多少请求处于活动状态。在这里可以找到一个队列示例: How can I make batches of ajax requests in jQuery?

这里: Queue ajax requests using jQuery.queue()

这里: http://gnarf.net/2011/06/21/jquery-ajaxqueue/

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多