2012-03-20 229 views
3

我发现一些有关此的其他问题,但他们并没有为我工作:(所以我张贴我自己的问题:消费的ASP Web服务使用jQuery

我做了一个ASP.NET Web服务。单它的代码是:

using System; 
using System.Web; 
using System.Web.Services; 

namespace testWebservice 
{ 
    public class ws : System.Web.Services.WebService 
    { 
     public ws() { 

     } 
     [WebMethod] 
     public String sendCar() 
     { 
      return "44.435006,26.102314"; 
     } 
    } 
} 

我试图调用使用jQuery从网站此WebService:

function getCar() 
{ 
    $.ajax({ 
    type:'POST', 
    url:'http://127.0.0.1:8080/ws.asmx/sendCar', 
    contentType: "application/json; charset=utf-8", 
    data: "{}", 
    dataType: "json", 
    success:function(msg) { 
     AjaxSucceeded(msg); 
    }, 
    error: AjaxFailed 
    }) 
    function AjaxSucceeded(result) { 
       alert(result.d); 
      } 
    function AjaxFailed(result) { 
       alert(result.status + ' ' + result.statusText); 
      }   
} 

当我运行页面,我得到一个警告说“0错误” 。 Cay任何人gi请给我一些建议吗?

回答

1

对于服务工作,你需要:

添加到您的项目参考System.Web.Extension

添加using System.Web.Script.Services;到您的源代码。

地址:

[ScriptService] 

到您的WS类。

地址:

<remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 

你的web.config里面<httpHandlers>标签下。

如果您从一个按钮中调用getCar(),请单击方法调用后添加return false;,以便点击不会导致回发。

例如:

[Default.aspx的]

<%@ Page Language="C#" Inherits="testWebservice.Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head runat="server"> 
    <title>jQuery Web Service call from Mono using JSON</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function getCar() 
     { 
      $.ajax({ 
      type:'POST', 
      url:'http://127.0.0.1:8080/ws.asmx/sendCar', 
      contentType: "application/json; charset=utf-8", 
      data: "{}", 
      dataType: "json", 
      success:function(msg) { 
       AjaxSucceeded(msg); 
      }, 
      error: AjaxFailed 
      }) 
      function AjaxSucceeded(result) { 
         alert(result.d); 
        } 
      function AjaxFailed(result) { 
         alert(result.status + ' ' + result.statusText); 
        } 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:Button runat="server" id="btnTest" Text="Call WebService" OnClientClick="getCar(); return false;" /> 
    </form> 
</body> 
</html> 

[ws.asmx.cs]

using System; 
using System.Web; 
using System.Web.Script.Services; 
using System.Web.Services; 

namespace testWebservice 
{ 
    [ScriptService] 
    public class ws : System.Web.Services.WebService 
    { 
     public ws() { 

     } 
     [WebMethod] 
     public String sendCar() 
     { 
      return "44.435006,26.102314"; 
     } 
    } 
} 

[web.config中]

<?xml version="1.0"?> 
<!-- 
Web.config file for testWebservice. 

The settings that can be used in this file are documented at 
http://www.mono-project.com/Config_system.web and 
http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx 
--> 
<configuration> 
    <system.web> 
    <compilation defaultLanguage="C#" debug="true"> 
     <assemblies> 
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </assemblies> 
    </compilation> 
    <customErrors mode="RemoteOnly"> 
    </customErrors> 
    <authentication mode="None"> 
    </authentication> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpHandlers> 
    <trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime" /> 
    <sessionState mode="InProc" cookieless="false" timeout="20" /> 
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 
    <pages> 
    </pages> 
    </system.web> 
</configuration> 
+0

'System.Web.Script.Services'在我当前的单声道运行时中缺失Mono 4.0.2(Stable 4.0.2.5/c99aa0c Wed Jun 24 05:31:11 EDT 2015)(64-bit),有没有办法手动添加它? – 2015-07-01 22:34:51

+0

找出命名空间所在的DLL的一部分并引用该DLL。 – 2015-07-01 23:21:03

0

只要我能看到,你使用的是旧的asp.net 2.0风格的webservice。你为什么将json设置为发送的数据类型?我不认为这适合那些网络服务

+0

我使用单声道,我不知道web服务应该是女巫的风格。我也不知道JSON。这完全是我在互联网上发现和阅读的改编。 – 2012-03-21 08:07:34