JQuery POST破坏了网址

时间:2015-07-26 17:15:17

标签: jquery post

我有一个宁静的服务,可以使用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>';

有什么想法吗?

1 个答案:

答案 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,但有些人(服务器人)是按自己的方式设置的。