2011-03-02 78 views
1

我想將數據發送到我的代碼後面的方法。除了當我添加到data參數時,它工作。jQuery對Web方法的Ajax請求

function (obj) { 
    $.ajax({ 
     type: "POST", 
     url: "Pages.aspx/EditPage", 
     data: "{'nodeID': '" + $(this).attr('id') + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
       // Replace the div's content with the page method's return. 
     } 
    }); 
    } 

爲什麼我添加帕拉姆導致Web方法不受到打擊?

更新:看到什麼客戶端錯誤被拋出後,似乎該ID是未定義的。我的方法獲取元素ID不正確?請記住我正在使用jsTree和ca我可能使用(obj)?

+0

JSON採用雙「{」nodeID「:」'+ $(this).attr('id')+'「}''可能值得一試。 – Robert 2011-03-02 03:41:49

+0

@可能是形式問題 – kobe 2011-03-02 03:42:22

+0

它嵌入在jsTree中,這就是它的原因。 @Robert我試着切換引號,但沒有奏效。當數據參數值被刪除時,Web服務獲得的命中正確。 – balexander 2011-03-02 03:45:04

回答

0

在Chrome調試完畢後,我發現該ID不定義。我重寫了日期參數去:

data: '{"nodeID": "' + obj.attr('id') + '"}', 

因爲obj是我目前在jsTree節點。

感謝大家提醒我在FF或Chrome中調試並調整引號。

+0

@bryan多數民衆贊成在偉大的,你可以通過給...投票承認...任何方式你的問題解決了很大 – kobe 2011-03-02 04:08:37

1

嘗試如下的內容:

jQuery.parseJSON('{"name":"John"}'); 
+0

我嘗試了'var nodeID = jQuery.parseJSON('{「nodeID」:''+ $(this).attr('id')+'「}');'並設置'data:nodeID',但沒有運氣。我做錯什麼了嗎? – balexander 2011-03-02 03:47:35

+1

@你可以提醒nodeID一次,並檢查它是如何形成的 – kobe 2011-03-02 03:48:48

+0

@請在firebug net面板中檢查數據將如何後端。 – kobe 2011-03-02 03:50:55

0

試試這個:

data: "{nodeID: '" + $(this).attr('id') + "'}", 

編輯:爲獲取ID,您可以使用this.id

0

有幾件事情來嘗試

  1. 刪除contentType
  2. 周圍的JSON鍵刪除引號
  3. 交換單引號和雙引號

它看起來是這樣的:

function (obj) { 
    $.ajax({ 
     type: "POST", 
     url: "Pages.aspx/EditPage", 
     data: '{nodeID: "' + $(this).attr('id') + '"}', 
     dataType: "json", 
     success: function (msg) { 
       alert('success!'); 
     } 
    }); 
} 
0

您使用的'this'引用是指jQuery'this'。因此,您的ID沒有被定義。

假設你正試圖從你的函數參數,獲取「OBJ」的ID,我會改寫這樣的功能:

jQuery.fn.your_func_name = function(){ 

    $.ajax({ 
     type: "POST", 
     url: "Pages.aspx/EditPage", 
     data: "{'nodeID': '" + $(this).attr('id') + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
     // Replace the div's content with the page method's return. 

    }); 

}//function 

使用方法如下:

$('#some_element').your_func_name();