2011-06-08 65 views
1

我有一個表格,允許用戶按照他們想要的順序拖放行,然後保存它們。讓拖放部分可以工作,我沒有任何問題。這是我遇到的問題。我正在向一個Web服務發送一個Ajax調用,然後這個服務會進行保存。雖然我似乎無法真正捕獲Web服務中的請求。保存對jQuery可排序表格的更改

我的JavaScript函數看起來像這樣:

$(document).ready(
      function() { 
       $(".sortable").sortable({ 
        update: function() { 
         serial = $('.sortable').sortable('serialize'); 
         $.ajax({ 
          url: "MyWebService.asmx/SortTable", 
          type: "post", 
          data: serial, 
          error: function() { 
           alert("theres an error with AJAX"); 
          } 
         }); 
        } 
       }); 

      }); 

JSON字符串顯示的內容與Firebug是顯示我的罰款。網絡服務功能是這樣的:

[WebMethod] 
public string SortTable(String[] rows) 
{ 
    //SaveChanges(); 
    return "Called!"; 
} 

當我在那裏放置一個斷點,它永遠不會被擊中。當函數中沒有參數時,它會被擊中。我嘗試用「對象」替換「String []」,但它仍然沒有被擊中,我覺得很奇怪。這裏發生了什麼?

回答

0

您可能需要使用[ScriptService]屬性修飾您的Web服務,以便允許客戶端腳本調用它。另外,如果您要發送JSON請求,則需要指定內容類型。另一種說法是將請求作爲實際的JSON對象發送,可以使用JSON.stringify方法實現(可能$('.sortable').sortable('serialize')調用已經完成了這一步,我不熟悉,只需確保POSTed值如下所示:[ 'row1', 'row2', ... ]):

$.ajax({ 
    url: 'MyWebService.asmx/SortTable', 
    type: 'post', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify([ 'row1', 'row2', 'row3' ]), 
    error: function() { 
     alert('theres an error with AJAX'); 
    } 
}); 
+0

它具有[ScriptService]屬性,並且如果函數中沒有任何參數就會被調用,這真的讓我困惑。我嘗試添加內容類型,但似乎扔掉了JSON文章。 serialize方法來自[here](http://jqueryui.com/demos/sortable/#method-serialize)。我的JSON交看起來像行[] = 0&行[] = 3&行[] = 1&行[] = 2等,根據螢火正在尋找像參數: 行[] 行[] 行[] row [] \t 2 – Ben 2011-06-08 16:28:38