Javascript Jquery中REST服务的AJAX请求,当参数通过URL而不是数据对象发送时得到响应
我使用ajax请求调用REST服务,并使用post方法传递参数。当我在RESTURL中传递参数时,我从REST服务得到响应,但是当我通过数据对象发送参数时,我没有得到任何响应。我做错什么了吗Javascript Jquery中REST服务的AJAX请求,当参数通过URL而不是数据对象发送时得到响应,javascript,jquery,ajax,rest,Javascript,Jquery,Ajax,Rest,我使用ajax请求调用REST服务,并使用post方法传递参数。当我在RESTURL中传递参数时,我从REST服务得到响应,但是当我通过数据对象发送参数时,我没有得到任何响应。我做错什么了吗 $.ajax({ type: "POST", url: "myURL?ID=5087&name=hello", data:{ 'id':'5087', 'name':'hello', }, success: function(msg){
$.ajax({
type: "POST",
url: "myURL?ID=5087&name=hello",
data:{
'id':'5087',
'name':'hello',
},
success: function(msg){
alert('wow' + msg);
}
});
在上面的请求中,如果我从URL中删除参数并保持数据对象不变,我不会得到任何响应您没有做错任何事情,问题是API没有遵循语义规则 接收POST请求时,数据应通过请求主体发送,但URL中可能包含的标识符除外。因此,当您指定
类型:'POST'
并向数据提供对象时,jQuery将把您发送的信息放在这里
但是,您正在调用的API正在通过URL检索POST请求中发送的数据,而实际上这应该通过GET请求来完成
因此,您必须手动将数据以application/x-www-form-urlencoded
格式附加到URL,就像您在工作示例中所做的那样。您没有做错任何事情,问题是API没有遵循语义规则
接收POST请求时,数据应通过请求主体发送,但URL中可能包含的标识符除外。因此,当您指定类型:'POST'
并向数据提供对象时,jQuery将把您发送的信息放在这里
但是,您正在调用的API正在通过URL检索POST请求中发送的数据,而实际上这应该通过GET请求来完成
因此,您必须手动将数据以application/x-www-form-urlencoded
格式附加到URL,就像您在工作示例中所做的那样。'name':hello
正在查找不存在的变量hello
。需要引用字符串。除此之外,我们对api的工作原理了解不够,这是问题中的一个错误。它现在被编辑了“名称”:hello
正在寻找一个不存在的变量hello
。需要引用字符串。除此之外,我们对api的工作原理了解不够,这是问题中的一个错误。现在编辑也可能是post期望json ContentTypeEnabled,但无论如何都不应从querystring读取任何值,因此对myURL?ID=5087&name=hello
的请求应该失败,因为如果您设置type:'post'
并使用data
jQuery将把值放入请求的正文中,不是querystring@RoryMcCrossan,将GET方法与queryString一起使用也不会返回任何内容。除了通过追加之外,还有什么方法可以使用POST方法和date对象来调用服务吗?这是我的观点-由于API的糟糕设计,您将不得不使用POST,但仍然需要手动构建查询字符串(或者如果您使用的是表单元素,则追加serialize()
的结果)也可能是post期望json ContentTypeEnable,但无论如何都不应从querystring读取任何值,因此对myURL?ID=5087&name=hello
的请求应该失败,因为如果您设置type:'post'
并使用data
jQuery,则会将值放入请求体中,不是querystring@RoryMcCrossan,将GET方法与queryString一起使用也不会返回任何内容。除了通过追加之外,还有什么方法可以使用POST方法和date对象来调用服务吗?这是我的观点-由于API的糟糕设计,您将不得不使用POST,但仍然需要手动构建查询字符串(或者如果您使用的是表单元素,则追加serialize()
的结果)