2009-09-12 97 views
1

我正在开发ASP.NET中使用客户端脚本的注册表单。所以我使用jQuery.ajax方法通过ASP.NET Web服务将所有字段的数据发布到服务器。但是当我执行Jquery.ajax方法时,它会调用错误函数。我试图在Firefox中使用Firebug进行调试。它显示错误500内部服务器错误。现在我所假设的是将数据插入到WebService中我需要使用POST方法,并且类似地,我需要Webservice内部的服务器端上的一个函数,该函数可以使用POST方法调用。我提供了很少的代码片段来说明我所做的。jQuery.ajax调用Web服务的问题

我的客户端脚本:在服务器上

//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"); 
} 

我的web服务:

//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

回答

6

如果您对服务器端(ASP.NET 2.0 + ASP.NET提供ASP.NET AJAX 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

0

如果你要提交一个JSON对象,下面的选项添加到$.ajax

contentType: "application/json; charset=utf-8",