我有以下代码,用于将参数传递给Web方法,并在jquery ajax中检索结果:
<script type="text/javascript">
$(document).ready(function () {
$('#<%=btnSignup.ClientID %>').click(function () {
var dataString = JSON.stringify({
firstName: $("#SignupFirstName").val(),
lastName: $("#SignupLastName").val(),
email: $("#SignupEmail").val(),
password: $("#SignupPassword").val()
});
$.ajax({
type: "POST",
url: "Signup.aspx/Signup",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
beforeSend: function () {
// some code
},
success: function (result) {
$('#loading').hide();
if (result.hasOwnProperty("d")) { result = result.d; }//and some more code
}
});
return false;
});
});
</script>
和网络方法:
[WebMethod]
public static SignupOutput Signup(string firstName, string lastName, string email, string password)
{
// execute some code and return an object for the json
}
该方法未执行,我正在使用不错的网址。请帮忙,代码有什么问题? 感谢。
答案 0 :(得分:0)
我首先会在你的点击功能中抛出一个alert
,以确保它实际被击中。假设它是......
查看the documentation / Base。一定不要错过该页面右侧的链接,它们有点模糊。
基本上,我认为你需要做的是......
将WebMethod移动到独立类中,然后删除[WebMethod]
属性。我过去也一直在努力回归对象,而我转移到的只是构建一个json格式的字符串并返回它。所以你最终得到的是这样的:
public class UmbracoWebMethods
{
public static SignupOutput Signup(string firstName, string lastName, string email, string password) // you may need to change this to public static string
{
// execute some code and return an object for the json
}
}
将配置添加到/presentation/config/restExtensions.config
<?xml version="1.0" encoding="utf-8"?>
<RestExtensions>
<ext assembly="YourAssembly" type="YourAssembly.UmbracoWebMethods" alias="UmbWebMethods">
<permission method="Signup" allowAll="true" returnXml="false" />
</ext>
</RestExtensions>
显然,您需要稍微调整一下以匹配您的确切程序集名称/命名空间。
更改ajax电话。
$.get("/Base/UmbWebMethods/Signup/" + $("#SignupFirstName").val()+ "/" + $("#SignupLastName").val()+ "/" + $("#SignupEmail").val() + "/" + $("#SignupPassword").val() + ".aspx",
希望这会对你有所帮助。祝你好运!