我正在使用客户端脚本在 ASP.NET 中开发注册表单。所以我使用 jQuery.ajax 方法通过 ASP.NET Web 服务将所有字段的数据发布到服务器。但是当我执行 Jquery.ajax 方法时,它会调用错误函数。我尝试在 Firefox 中使用 Firebug 对其进行调试。它显示错误 500 Internal Server Error。现在我假设要将数据插入到 WebService 中,我需要使用 POST 方法,同样我需要在 Webservice 内部的服务器端有一个函数,可以使用 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。
请您参考如下方法:
如果服务器端有可用的 ASP.NET AJAX(ASP.NET 2.0 + ASP.NET AJAX 扩展 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 .
