Skip to main content
 首页 » 编程设计

c#之jQuery.ajax 调用 Web 服务的问题

2024年01月29日33Leo_wl

我正在使用客户端脚本在 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 .