我很难弄清楚为什么触发 AJAX 调用的 onblur 需要很长时间才能完成。有时需要几十秒。似乎我拥有的“描述”字段越多,花费的时间就越长。任何人都可以查看此代码,并告诉我他们是否认为我遗漏了什么?
var description;
var id;
$(".description").live('blur',function() {
var success;
var dataType;
$(".dynamic_row,<?php echo $services; ?>").each(function() {
var row = $(this);
var id = row.find(".id").val() || 0;
var description = row.find(".description").val() || "";
var q = <?php echo $q; ?>;
$.ajax({
type: "POST",
url: 'setdescname.php',
data: {ider:id, descriptionr:description, qr:q},
success: function(result) {
if(result.isOk == false)
alert(result.message);
},
dataType: dataType
});
});
});
<?php echo $services; ?>
拉入由复选框激活的大约 16 个可能的动态行的名称。那部分工作得很好......
这是 setdescname.php 中的代码
require_once('include/database.php');
if (!dbConnect()) {
echo 'Error connecting to database';
exit;
}
$id = $_POST['ider'];
$description = $_POST['descriptionr'];
$q = $_POST['qr'];
$qry = "UPDATE items SET description = '".$description."' WHERE id = '".$id."'";
$result = mysql_query($qry) or die(mysql_error());
如果您认为这很重要,我的代码中有以下内容。
$.ajaxSetup({async:false});
$.ajaxSetup({cache:false});
这是必需的,因为所有用户都在 IE 中,并且它会缓存 ajax 调用,在没有必要功能的情况下呈现添加的新“动态”字段(带回mysql_insert_id()
新添加)。
所有这些都有效,只是缓慢得令人痛苦......
我将不胜感激任何意见或建议。谢谢。