我正在ASP.NET中开发一个注册表单,我在其中使用客户端脚本。所以我使用jQuery.ajax方法通过ASP.NET Web服务将所有字段的数据POST到服务器。但是当我执行Jquery.ajax方法时,它会调用error函数。我尝试在Firefox中使用Firebug进行调试。它显示错误500内部服务器错误。现在我假设将数据插入到WebService中我需要使用POST方法,同样我需要Web服务中的服务器端的一个函数,可以使用POST方法调用。我提供了一些代码片段来说明我所做的事情。
我的客户端脚本:
//My Client Side Function
function registerUser()
{
var User = {
FirstName:$get("txtFirstName").value,
LastName:$get("txtLastName").value
.
.
//and so on....This way I creat my json object to POST on server
};
//jQuery to POST Data
jQuery.ajax({
type:"POST",
url:"Service/UserRegistration.asmx/InsertUser",
data:User,
success:notifyUser,
error:setErrorField
});
}
//Function for Success Complition
function notifyUser(msg)
{
alert("Registration Successfull");
}
服务器上的我的网络服务:
//My C# Web Service Logic
[WebMethod]
public void InsertUser(User use)
{
FreeUser us = new FreeUser();
us.FirstName = use.FirstName;
.
.
//and so on
}
现在我想的是POST方法需要WebInvoke
类作为属性。如何制作一个可以被JavaScript调用的方法?我可能必须使用WebInvoke
。
答案 0 :(得分:6)
如果您在服务器端提供ASP.NET AJAX(ASP.NET 2.0 + ASP.NET AJAX Extensions v1.0或ASP.NET 3.5+),我发现最简单的方法是在客户端和服务器端之间使用JSON。您只需要将[ScriptService]属性添加到您的服务中,然后使用此表单来调用服务:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "WebService.asmx/WebMethodName",
data: "{}",
dataType: "json"
});
有关详细信息,请参阅此处的完整帖子:http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/
为了在该示例代码中提供JavaScript对象,您还需要use JSON.Stringify to generate an appropriate JSON string to pass to the server-side。
答案 1 :(得分:0)
如果您要提交JSON对象,请将以下选项添加到$.ajax
:
contentType: "application/json; charset=utf-8",