2016-08-17 97 views
1

我在簡單jquery.ajax /例如的WebMethod不工作 - 如何解決

http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

的現場演示作品在網站上這個簡單的WebMethod例子。我下載了示例代碼並將代碼複製到我的測試webapp中,如下所示 - 除了我的示例應用程序不工作。我在我的(VS2013)示例應用程序的腳本文件夾中有相同的jquery-1.3.2.min.js(我在此文件夾中有幾個jQuery腳本)。

這裏是從我的示例應用程序的客戶端腳本/標記代碼(WebForm3是起始頁)

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>WebForm3</title> 

<script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 

<script type = "text/javascript"> 
    function ShowCurrentTime() { 
     $.ajax({ 
      type: "POST", 
      url: "WebForm3.aspx/GetCurrentTime", 
      data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
    } 

    function OnSuccess(response) { 
     alert(response.d); 
    } 
</script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    Your Name : 
    <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
    <input id="btnGetTime" type="button" value="Show Current Time" onclick = "ShowCurrentTime()" /> 
    </div> 
    </form> 
</body> 
</html> 

這裏是背後的代碼 - 運行沒有錯誤時的頁面 - 只要警報未顯示 - 我是不正確地引用ajax中的網址?

public partial class WebForm3 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    [System.Web.Services.WebMethod] 
    public static string GetCurrentTime(string name) 
    { 
     return "Hello " + name + Environment.NewLine + "The Current Time is: " 
      + DateTime.Now.ToString(); 
    } 
} 

回答

0
<script type = "text/javascript"> 
function ShowCurrentTime() { 
    var userName = $('#txtUserName').val() 
    $.ajax({ 
     type: 'POST', 
     url: 'WebForm3.aspx/GetCurrentTime', 
     data: JSON.stringify({ name: userName }), 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: OnSuccess, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
} 

function OnSuccess(response) { 
    alert(response.d); 
} 
</script> 

嗨豐富,從我所看到的你的Ajax調用大部分是正確的,但你要確保你避免使用字符串連接的參數傳遞,您可以通過使用一個做同樣的事情數據散列(即JSON.stringify)或傳入您創建的變量來保存參數的數據。如果此修復程序不起作用,我會建議做一個變量並加載來自txtUserName.ClientID的值,我不能肯定地說,但這可能是另一個潛在的問題。希望這可以幫助!

+0

謝謝您的回覆 - 我想你的修改ShowCurrentTime()函數,並收到此錯誤消息:HTTP在17行未處理的異常,列13://本地主機:62595/WebForm3.aspx 0x800a01b6 - JavaScript運行錯誤:對象不支持屬性或方法'val'我需要不同的jquery ... js文件嗎? –

+0

嘿沒問題,我會切換回.value然後只是確認它裏面的值是一個字符串或你期望的。我將它從.value更改爲.val()的唯一原因是因爲jQuery僅支持.val()從元素中檢索值,但如果它給了您一個錯誤,我會嘗試將其更改回來,看看會發生什麼。 –

+0

我切換回.value() - 給我錯誤信息。然後嘗試沒有parens,我回來了一個平方,沒有得到任何形式的錯誤信息或任何東西。你有沒有嘗試過這個例子,看看它是否可行? –