2010-11-07 106 views
1

我想調用一個asp.net方法使用jquery/ajax從一個按鈕點擊模態對話窗口。但我似乎得到的是,並警告說「錯誤」。我在網上看到了許多類似的例子,但我似乎無法讓它工作。我調用的頁面/方法(newcall.aspx/savenote)與所有jquery/ajax相同頁面。asp.net jquery ajax post

任何任何想法?

感謝,

 var dlg = jQuery("#dialog2").dialog({ 
      bgiframe: false, 
      autoOpen: true, 
      height: 410, 
      width: 800, 
      modal: true, 
      show: 'Transfer', 
      hide: 'Transfer', 
      draggable: true, 
      resizable: true, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       }, 
       "Save": function() { 
        var txtnote = document.getElementById("<%=txtNote.ClientID %>").value; 

        $.ajax({ 
         type: "POST", 
         url: "newcall.aspx/savenote", 
         data: txtnote, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json",        
         success: function(msg) { 
          alert(msg); 
         },   
         error: function(XMLHttpRequest, textStatus, errorThrown) { 
          alert(textStatus); 
         } 
        }); 

        $(this).dialog("close"); 
       } 
      } 
     } 

     ); 

背後方法代碼:(此刻我只是在 「OK」)

Public Function savenote() As String 
    Return "ok" 
End Function 
+0

缺少WebMethod屬性? – tvanfosson 2010-11-07 13:45:48

+0

將alert(textStatus);改爲alert(errorThrown);',你會得到什麼? – 2010-11-07 13:48:56

+0

現在我得到「undefined」 – thegunner 2010-11-07 13:53:12

回答

1

您需要添加WebMethod屬性,申報頁面的方法Shared,並將您要發送的數據與方法簽名進行匹配。這是你應如何改變你的服務器端方法:

<WebMethod()>_ 
Public Shared Function savenote() As String 
    Return "ok" 
End Function 

您可以不改變你的數據參數脫身,但可能不是因爲它是無效的JSON。暫時嘗試將您的數據參數更改爲{}。當您準備開始將txtnote傳遞到您的服務器端方法時,您需要將其傳遞爲{txtnote: 'Your note string here'}