2015-08-19 72 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

相关问题