Ajax 调用 restful WS 总是出错(fiddler 得到很好的响应)

Posted

技术标签:

【中文标题】Ajax 调用 restful WS 总是出错(fiddler 得到很好的响应)【英文标题】:Ajax call restful WS is always getting error (fiddler gets the good response) 【发布时间】:2012-12-04 13:48:08 【问题描述】:

我在 VS 2010 中使用两种简单的方法(一种 GET,另一种 POST)制作了 Restfull WS。它们看起来像:

[ServiceContract]
public interface IService1
    

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "createUser")]
    string createUser();

    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, UriTemplate = "loginUser/email/password")]
    string loginUser(string email, string password);

    

这些方法的定义很简单:

public class Service1 : IService1
    

 public string createUser()
        
            return "Successful POST call !!! ";
        

 public string loginUser(string email, string password)
        
            return "Successful GET call !!! " + email + " - "+ password;
        
  

我已将此服务发布到 IIS 并在浏览器中测试了我的方法(仅 loginUser (GET) 方法,无法通过浏览器测试 createUser (POST) 方法)和方法 (loginUser ) 工作正常。 当我尝试通过 jQuery AJAX 调用方法时,我总是在没有任何通知的情况下收到错误调用。我检查了我的提琴手,并且有正确的响应。

我的 Ajax 方法:

$(document).ready(function()

$("#button2").click(function()

  $.ajax(
   type: "GET",                 
   url: "http://localhost/AutoOglasi/Service1.svc/loginUser/bole/bole",

   success: function (response) 
    alert("respons  "+response);
   ,
       error: function (request, status, error) 
    alert(request.responseText+" -- " + status + " --- "+ error);
   
     );                

);

);

我 mozila firebug i 部分 XML 我明白了:

XML 解析错误:未找到元素位置:moz-nullprincipal:ba25ef4a-f215-486e-b965-e70714c5af31 第 1 行,第 1 列: ^

我在这里做错了什么,我只是想不通,因为提琴手给了我很好的回应?

【问题讨论】:

【参考方案1】:

您声明 ResponseFormat = WebMessageFormat.XmlResponseFormat 并且您返回的不是 xml 而是一个字符串。它期望第一个字符是一个

【讨论】:

我已经尝试过了(添加 contenttype:"text/xml"),我又试了一次。现在我得到:“NetworkError: 405 Method Not Allowed - localhost/AutoOglasi/Service1.svc/loginUser/bole/bole” 总是当我尝试添加 contentType(使用 json、xml 或 html)时,会出现相同的错误(上述错误)。我想我不明白你回答的第二部分。在回合的情况下,(无论是否使用ResponseFormat = WebMessageFormat.Xml)都会出现错误。 如果你不添加ResponseFormat,我认为服务默认提供xml。对我来说,我会得到什么样的响应(xml、json、html)并不重要,我只是想得到一些东西。 @Milos 你的 Ajax 方法和 web 服务在同一台服务器上吗?否则,您可能正在查看跨域调用。 @Rick 不,我的网络服务和我的 Ajax 不在同一台服务器上。我试图在同一台服务器上添加我的应用程序,现在它可以工作了。

以上是关于Ajax 调用 restful WS 总是出错(fiddler 得到很好的响应)的主要内容,如果未能解决你的问题,请参考以下文章

在jsp中调用ajax送了一个需下载的文件名给servlet,下载完成文件后需用需返回一个字符串,但是总是出错

ajax——CORS跨域调用REST API 的常见问题以及前后端的设置

AJAX 操作完成它的工作,但总是出错

在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功:

Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx

如何使用 jQuery 的 ajax 方法调用局部视图