Jquery 通过AJAX调用的WCF服务没有响应

Jquery 通过AJAX调用的WCF服务没有响应,jquery,ajax,wcf,response,Jquery,Ajax,Wcf,Response,我知道这个问题已经被问过很多次了,但我还没有找到任何解决我这个问题的方法 我有一个使用webHttpBinding的WCF web服务,我正试图通过jquery$.ajax()调用从网页调用该服务 运行时,会触发成功警报,但消息为空 使用FireBug,我可以看到响应完全为空,而使用HttpFox时,返回错误NS\u error\u DOM\u BAD\u URI。我看不出这是一个跨浏览器的问题,因为我将使用localhost,并且服务也在同一台机器上运行(我甚至尝试将localhost更改为机

我知道这个问题已经被问过很多次了,但我还没有找到任何解决我这个问题的方法

我有一个使用webHttpBinding的WCF web服务,我正试图通过jquery$.ajax()调用从网页调用该服务

运行时,会触发成功警报,但消息为空

使用FireBug,我可以看到响应完全为空,而使用HttpFox时,返回错误NS\u error\u DOM\u BAD\u URI。我看不出这是一个跨浏览器的问题,因为我将使用localhost,并且服务也在同一台机器上运行(我甚至尝试将localhost更改为机器名,但没有成功)

服务就是这样定义的

<OperationContract(), DataContractFormat()>
<WebInvoke(BodyStyle:=WebMessageBodyStyle.Wrapped, Method:="GET", ResponseFormat:=WebMessageFormat.Json)> _
Function bob() As String
任何帮助都将不胜感激——我真的开始发疯了

编辑: 现在有趣的是,如果我将url粘贴到浏览器地址栏中,就会启动一个下载,其中包含json格式的服务方法的结果

谢谢
John

您请求中的数据很可能是问题所在:

  • WCF函数不需要任何输入数据

  • 由于您传递一个字符串作为数据(它看起来像一个空的JSON对象,但实际上是一个字符串),jQuery会像这样将它附加到URL:
    http://localhost/KasraNet.Services.Centurian.WebService/CenturianAdmin.svc/bob?{}
    但这是一个无效的URL,IIS将拒绝它


    • 您请求中的数据很可能是问题所在:

      • WCF函数不需要任何输入数据

      • 由于您传递一个字符串作为数据(它看起来像一个空的JSON对象,但实际上是一个字符串),jQuery会像这样将它附加到URL:
        http://localhost/KasraNet.Services.Centurian.WebService/CenturianAdmin.svc/bob?{}
        但这是一个无效的URL,IIS将拒绝它


        • 好吧,我的脑袋有点麻木

          我开始考虑跨域问题,意识到我是在打开文件的直接链接,而不是通过IIS

          创建一个VD并通过它打开页面,我期待的结果回来了


          感谢您抽出时间来研究这个问题,也很抱歉浪费您的时间。

          好的,我有点麻木

          我开始考虑跨域问题,意识到我是在打开文件的直接链接,而不是通过IIS

          创建一个VD并通过它打开页面,我期待的结果回来了


          感谢您抽出时间研究此问题,并为浪费您的时间表示歉意。

          此服务是否托管在端口80上?如果不是,这仍然是一个同源策略违反。请原谅我的无知,但我如何找到它,如果需要,如何更改它?因为它通过在浏览器的地址栏中键入相同的地址来工作,这不是端口问题。您可能想尝试$.get(您的URL,函数(数据){alert(“msg=“+data”);}),看看是否有效。您对.ajax的附加选项可能会影响某些事情。不幸的是,同样的错误。来自HttpFox的数据是00:00:04.299 0.094 417 206 GET 200 application/json(NS\u ERROR\u DOM\u BAD\u URI)。该错误通常发生在跨域问题时;你能告诉我你用来访问网站本身的url吗?服务是否托管在端口80上?如果不是,这仍然是一个同源策略违反。请原谅我的无知,但我如何找到它,如果需要,如何更改它?因为它通过在浏览器的地址栏中键入相同的地址来工作,这不是端口问题。您可能想尝试$.get(您的URL,函数(数据){alert(“msg=“+data”);}),看看是否有效。您对.ajax的附加选项可能会影响某些事情。不幸的是,同样的错误。来自HttpFox的数据是00:00:04.299 0.094 417 206 GET 200 application/json(NS\u ERROR\u DOM\u BAD\u URI)。该错误通常发生在跨域问题时;你能告诉我你用来访问网站本身的url吗?我在没有输入数据的情况下尝试过这个方法,我也在一个需要数据的方法上尝试过。不幸的是,同样的问题。我在没有输入数据的情况下尝试过这个方法,我也在一个需要数据的方法上尝试过。不幸的是,同样的问题。
          <OperationContract(), DataContractFormat()>
          <WebInvoke(BodyStyle:=WebMessageBodyStyle.Wrapped, Method:="GET", ResponseFormat:=WebMessageFormat.Json)> _
          Function bob() As String
          
          Host: localhost
          User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 (.NET CLR 3.5.30729)
          Accept: application/json, text/javascript, */*; q=0.01
          Accept-Language: en-gb,en;q=0.5
          Accept-Encoding: gzip,deflate
          Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
          Keep-Alive: 115
          Connection: keep-alive
          Content-Type: application/json; charset=utf-8
          Origin: null
          
          Server: Microsoft-IIS/5.1
          Date: Fri, 13 May 2011 14:20:53 GMT
          X-Powered-By: ASP.NET
          X-AspNet-Version: 4.0.30319
          Content-Length: 19
          Cache-Control: private
          Content-Type: application/json; charset=utf-8