Jquery ajaxを使用してデータの大部分を1つずつ更新しようとしています。すべてのことがうまく始まりますが、5分後には、 のようなエラーが表示されます。 AJAXの誤差関数のjquery ajax insideループreturn statusTextエラー、IEの一定時間後のステータス0
エラー:.
MainDataはJSONオブジェクトの配列であり、JSONオブジェクトの数3000の周り含有あります。私はasp.netのWebフォーム
Jquery ajaxを使用してデータの大部分を1つずつ更新しようとしています。すべてのことがうまく始まりますが、5分後には、 のようなエラーが表示されます。 AJAXの誤差関数のjquery ajax insideループreturn statusTextエラー、IEの一定時間後のステータス0
エラー:.
MainDataはJSONオブジェクトの配列であり、JSONオブジェクトの数3000の周り含有あります。私はasp.netのWebフォーム
のWebサービスを使用しています
function DoPost()
{
$.each(MainData, function (key, value) {
var mainCode = value.MainCode;
var companyCode = value.CompanyCode;
$.ajax({
url: "Allotment.asmx/DoAllotment",
data: "{MainCode:'" + mainCode + "', sNoOfAllotment:'" + noOfAllot + "',CompanyCode:'" + companyCode + "'}",
dataType: 'text',
contentType: "application/json; charset=utf-8",
type: "Post",
success: function (res){
Progress(res); // this funtion will show progress of update.
},
error: function (res) {
console.log(res);
}
});
});
}
問題は、同じURLへの同時接続数の最大値である可能性があります。現在$.ajax()
が完了すると、次の$.ajax()
コールをスケジュールできます。
も参照してくださいmultiple, sequential fetch() Promise
function DoPost(value) {
var mainCode = value.MainCode;
var companyCode = value.CompanyCode;
return $.ajax({
url: "Allotment.asmx/DoAllotment",
data: "{MainCode:'" + mainCode + "', sNoOfAllotment:'"
+ noOfAllot + "',CompanyCode:'" + companyCode + "'}",
dataType: 'text',
contentType: "application/json; charset=utf-8",
type: "POST",
success: function(res) {
Progress(res); // this funtion will show progress of update.
},
error: function(res) {
console.log(res);
}
});
}
var copy = MainData.slice(0);
var res = (function re(value) {
return DoPost(value).then(function() {
return copy.length ? re(copy.shift()) : "complete"
})
})(copy.shift());
res.then(function(complete) {
console.log(complete)
}, function(err, textStatus, jqxhr) {
console.log(err)
});
javascriptの約束はまったく新しいです。あなたはもう少し説明してください、このコードがどのように働くか? –
元の配列を 'copy'に保存する必要がある場合は、元の配列のコピーを作成し、' $ .ajax() '要求を連続して呼び出し、前の要求が完了したときに次の要求を行います。あなたは@TariqBによる問題の説明を与えられて、 'MainData'を' POST'リクエストでポストすることもできます。 – guest271314
エラー0x2ee2
は、タイムアウトエラーのIEの表現です。このエラーが発生すると、同じクライアントから送信された多数の要求のために、サーバーが要求に応答しなくなったことが示されます。これはクライアントからのDOS攻撃を避けるサーバです。
適切な方法は、コードを最適化して、使用可能な最大帯域幅を利用してサーバーへの要求数を最小限に抑えることです。
上記の質問に画像を追加してください。 –
申し訳ありませんが、イメージを追加するのに十分な評判がありませんでした。画像は表示されませんでした。今それはon..plzチェックしています –