Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery中REST服务的AJAX请求,当参数通过URL而不是数据对象发送时得到响应_Javascript_Jquery_Ajax_Rest - Fatal编程技术网

Javascript Jquery中REST服务的AJAX请求,当参数通过URL而不是数据对象发送时得到响应

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请求调用REST服务,并使用post方法传递参数。当我在RESTURL中传递参数时,我从REST服务得到响应,但是当我通过数据对象发送参数时,我没有得到任何响应。我做错什么了吗

$.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()
的结果)