我有一个宁静的服务,可以使用Postman测试,它的工作原理。但是当我使用JQuery $ .post时它会失败。服务器记录传入的请求,这与从邮递员请求记录的请求完全不同。
Postman 请求会像这样记录(一切都很好): [26 / Jul / 2015:11:58:27 -0500]“POST / api / customers / 1001 / users HTTP / 1.1”200 1
JQuery 请求会像这样记录(失败): [26 / Jul / 2015:12:03:19 -0500]“POST / customer /%5Bobject%20Object%5D HTTP / 1.1”404 1045
Javascript代码。我尝试了很多URL的排列,看起来并不重要,我似乎完全忽略它:
var url = 'http://mywebsite.ca/api/customers/1001/users';
$.post({
url: url,
type: 'POST',
dataType: 'text',
data: xml
}).done(function() {
alert('success!');
}).error(function() {
alert('error occurred');
});
我尝试了很多格式的帖子;与'content'一样,dataType为xml等。总是得到相同的服务器错误,URL全部搞砸了。
XML looks like this:
var xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
'<ns2:ca.zzz.bus.schemas.Api.xsd xmlns:ns2="uri">' +
' <email>newcustomer@newcustomer.com</email>' +
' <customerId>1001</customerId>' +
' <password>newuserpass</password>' +
'</ns2:ca.avox.bus.schemas.avoxApi.xsd>';
有什么想法吗?
答案 0 :(得分:0)
没有来自jquery文档的帮助,但其他人在SO上有一个可行的解决方案。
jQuery.ajax({
headers: {
'Accept': 'text/plain',
'Content-Type': 'application/xml'
},
'type': 'POST',
'url': url,
'data': xml,
'content': xml,
'dataType': 'xml',
'success': alert(1),
'error': alert(2),
});
另一个问题(修复),服务器在我期待xml时返回文本。是的,我更喜欢JSON,但有些人(服务器人)是按自己的方式设置的。