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 的常见问题以及前后端的设置
在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功: