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()
ます)。
これはすべて機能しますが、痛々しいほど遅いです...
アドバイスや提案をいただければ幸いです。ありがとう。