ループ内でJquery ajaxリクエストを使用していますが、最後のリクエストまではすべてうまく行きます。最後のリクエストの後、ページが自動的にリロードされます。私はそこで何が起こっているのか理解できません。ループ内のAjaxリクエスト完了後のページリロード
Plzレビューとヘルプ。 私はasp.net WebフォームとWebサービスを使ってajaxリクエストを処理しています。
のjQueryコード:
var mainData = GetFromExcel();
function StartSaving()
{
for (i = 0; i < totalCount; i++)
{
DoPost(i);
}
}
function DoPost(i)
{
var mainCode = MainData[i].MainCode;
var noOfAllot = MainData[i].NoOfAllotment;
var CompanyCode = MainData[i].CompanyCode;
console.log(mainCode +' Company Code:'+ CompanyCode+':' + noOfAllot);
$.ajax({
url: "Allotment.asmx/DoAllotment",
data: "{MainCode:'" + mainCode + "', sNoOfAllotment:'" + noOfAllot + "',CompanyCode:'" + CompanyCode + "'}", // the data in JSON format. Note it is *not* a JSON object, is is a literal string in JSON format
dataType: 'text',
contentType: "application/json; charset=utf-8",
type: "Post",
async: false ,
success: function (res) {
console.log(res);
},
error: function (res) {
}
});
}
GetFromExcelはexcelsheetを取り、JSON配列に変換する機能です。そのために私はxlsx.js
Webサービスコードを使用している:
[WebMethod]
public String DoAllotment(string MainCode, string sNoOfAllotment, string CompanyCode)
{
JavaScriptSerializer js = new JavaScriptSerializer();
if(checkData())
return "Error";
else
return "Success";
}
「StartSaving」はどのように実行されますか?おそらくあなたはデフォルトのフォームアクションを防ぐ必要があります - あなたは 'async:false'を使っていると考えていますが、それはまさに問題です...現代のすべてのブラウザで'同期XMLHttpRequestがメインスレッドで廃止されました。 **同期AJAXをしないでください** –
はjavascriptのクリックイベントによって実行されます –