2017-02-07 12 views
1

ループ内で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"; 
} 
+2

「StartSaving」はどのように実行されますか?おそらくあなたはデフォルトのフォームアクションを防ぐ必要があります - あなたは 'async:false'を使っていると考えていますが、それはまさに問題です...現代のすべてのブラウザで'同期XMLHttpRequestがメインスレッドで廃止されました。 **同期AJAXをしないでください** –

+0

はjavascriptのクリックイベントによって実行されます –

答えて

1

を、これは一般的な落とし穴です。

  1. がfalseを返すために、あなたのjavascriptのメソッドを変更し、以下を参照:

    function StartSaving() { 
        for (i = 0; i < totalCount; i++) { 
         DoPost(i); 
        } 
        return false; //This is important for not allowing button click post back 
    } 
    
  2. をasp.NetボタンでOnclientClick追加するには、以下に示すよう:

    <asp:button ..... OnClientClick="return StartSaving();"></asp:button> 
    

** *他のすべてがあなたのコードに完璧です!!

+0

本当にありがとう...実際に私はHTMLの入力ボタンを使用しています.... –

関連する問題