2017-05-08 47 views
0

請參閱下面的AJAX代碼:AJAX陣列停止AJAX調用

function Save() 
     { 

      var checkBoxArray = $("input:checkbox:checked").map(function() { 
       return this.id 
      }).get(); 

      var str = JSON.stringify(checkBoxArray); 
       var user = document.getElementById("ctl00_ContentPlaceHolder1_lstUsers"); 
       $.ajax({ 
        type: "POST", 
        url: "frmReview.aspx/AllocateReview", 
        data: '{strUser: "' + user.value + '", strCheckBoxes: ' + str + '}', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
       success: OnSuccess(), 
       async: false, 
       failure: function (response) { 
        alert('There was a problem allocating the reviews') 
       } 
       }); 

       function OnSuccess() { 
        return function (response) { 
         alert("The reviews where allocated successfully"); 
        } 
       } 
    } 

和下面的服務器端代碼:

<System.Web.Services.WebMethod()> _ 
    Public Shared Sub AllocateReview(ByVal strUser As String, ByVal strCheckBoxes As String) 
     msgbox("got here") 
    End Sub 

我把一個斷點在MessageBox(服務器端)。但是,它沒有達到。如果我不傳遞str(這是一個數組),即我將它排除在客戶端和服務器端,就會到達它。爲什麼數組不傳遞給服務器?沒有錯誤 - 就好像沒有任何反應。

+0

你應該通過一個JavaScript名/值對象作爲'data'的價值;它不應該只是一個字符串,除非它是以URL查詢字符串的形式。 – Pointy

+0

@Pointy,你可以在答案中發佈? – w0051977

+0

@Pointy如果服務器期望它可以傳遞一個JSON字符串 – epascarello

回答

1

在一個jQuery $.ajax()調用,data屬性應該是

  • 一個URL樣式的查詢字符串( 「富=酒吧&你好=世界」);
  • 一個普通對象({ foo: "bar", hello: "world" });
  • 對象的數組與namevalue性能

    [ { name: "foo", value: "bar" }, 
        { name: "hello", value: "world" }] 
    

您的代碼正在建設一個JSON字符串,我不認爲它應該是。