我创建了一个非常昂贵的php类,需要在管理页面上处理大量请求。出于这个原因,我正在尝试使用jquery queing + ajax调用来批处理请求但是整个javascript没有触发,我不明白为什么。我不仅仅是一个PHP专家,还有js或jQuery。
代码:
<script type="text/javascript">
$(document).ready(function () {
window.queue = $.jqmq({
// Queue items will be processed every 250 milliseconds.
delay: 500,
// Process queue items one-at-a-time.
batch: 10,
// For each queue item, execute this function.
callback: function (model, apit) {
$.ajax({
url: 'script.php',
type: "post",
cache: false,
data: "model=" + model + "&api=" + apit,
success: function (data) {
$(".error_msg p").append(data);
}
},
// When the queue completes naturally, execute this function.
complete: function () {
$.ajax({
url: 'script.php',
type: "post",
cache: false,
data: "cleanup=1",
success: function (data) {
$(".error_msg p").append(data);
}
$('.error_msg p').append('<br /><span class="done">Queue done<\/span>');
}
});
//the next line is repeated a couple hundred times with different values
queue.add('arg1', 'arg2'); queue.add('arg1', 'arg2');
});
</script>
此代码位于正文中。 包含的脚本(在头部)是:
<script type="text/javascript" src="js/jquery-1.4.1.js"></script>
<script type="text/javascript" src="js/jquery.ba-jqmq.js"></script>
我已经使用TamperData FF插件检查过,并且ajax发布到script.php只是没有解雇,我不明白为什么......
答案 0 :(得分:0)
在jqmq documents中,它表示回调方法接受一个参数。你正试图发送更多。 add方法的第二个参数是优先级,只能是布尔值。
queueObj.add( item [, priority ] );
您应该将参数添加为数组或对象。
我创建了一个Fiddle,它似乎工作正常。
更新: 另外,我认为同时ajax请求限制为3或4,因此您将无法拥有10个批次。