2015-08-19 77 views
1

jQuery代碼:jQuery的Ajax的方法不調用代碼隱藏asp.net方法

<script type="text/javascript"> 
$(document).ready(function() { 
$("#frmReg").on('submit', function (e) { 
var emailAddr = $("#inputEmail").val(); 
      var userName = $("#userName").val(); 
      var password = $("#inputPassword").val(); 
      var FormData = { 
       Email: emailAddr, 
       UserName: userName, 
       Password: password 
      }; 
      var dd = JSON.stringify(FormData); 
      $.ajax(
       { 
        type: "POST", 
        url: "Register.aspx/EmailAvailability", 
        contentType: "application/json; charset=utf-8", 
        data: '{"formData":'+ dd+ ' }', 
        dataType: "json", 
        success: function (data) { 
         alert("Entered"); 
        }, 
        fail: function() { 
         alert("failure"); 
        } 
       }); 
     }); 
    }); 
</script> 

阿賈克斯代碼隱藏文件: 這是Asp.net方法。

public static bool EmailAvailability(string formData) 
{ 
    return true; 
} 
+0

您是否檢查瀏覽器控制檯是否有任何錯誤? – Sherlock

+0

如果我的答案幫助你標記爲正確! – mybirthname

回答

1

您在此處輸入錯誤。 你已經使得dd看起來像Json,使用JSON.stringify!

data: '{"formData":'+ dd+ ' }', 

這應該是這樣的:

data: dd, 

而且你的DD對象可以做到這樣的,如果你想成爲項目的數組:

var uData = []; 
uData[0] = emailAddr; 
uData[1] = userName; 
uData[2] = password; 

var dd = JSON.stringify(uData: uData); 

現在你的網頁服務方法看起來像 EmailAvailability(List<string> uData)

如果你希望他們作爲獨立的參數:

var dd = JSON.stringify(emailAddr: emailAddr, userName: userName, password: password); 

在這種情況下您的Web服務方法將看起來像EmailAvailability(string emailAddr, string userName, string password)

不要忘了data: dd

P.S:我也沒有看到[WebMethod]這個屬性在你的例子後面的代碼中別忘了!

[WebMethod] 
public static bool EmailAvailability(string formData) 
{ 
    return true; 
} 
+0

建議更改爲'data:dd,'我認爲這不會有幫助 - 因爲該方法需要字符串,而不是對象(或多個參數)。雖然,你是對的 - 根據你的建議,最好按照慣例去做,但是他還需要更新C#方法,以便不再僅僅使用字符串參數。 – Rob

+1

@Rob因此,我寫了他的EmailAvaiability在這兩種情況下的樣子,你可以閱讀它! – mybirthname

+1

啊,錯過了 - 不要緊,然後:) – Rob

相關問題