2016-05-26 115 views
0

我有一个ajax发布请求,需要以array [integer]格式发送一些数据,而不需要参数或密钥。不幸的是,每次尝试时浏览器都会挂起请求。我已经在邮递员和招摇的成功,但我不能找出发送这个无钥匙阵列所需的数据格式。阿贾克斯数据方法

这里是我的要求:

$.ajax({ 
     type: "POST", 
     url: "/endpoint?code=" + data, 
     data: [1], 
     success: function(response) { 
      console.log(response); 
     }.bind(this), 
     error: function(xhr, status, err) { 
      console.log(status + " " + err); 
     }.bind(this) 
    }); 

在我扬鞭文档以下工作

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "[1]" "http://url/endpoint?code=testing" 

在邮递员,它看起来像表单数据岗位数组没有价值的关键。 我已经能够在浏览器中实现这一点,但仍然没有运气。

任何帮助将不胜感激,这似乎是一个简单的回答问题,但我似乎无法找到任何解决方案。

+0

是否将引号放在数组中,即传递字符串而不是数组字面量? – metame

+1

您也可以使用'JSON.stringify([1])'这对于可扩展性来说会是一个更好的解决方案。 – metame

+0

我的想法。我已经尝试过这些,但没有运气。 – user3225501

回答

0

尝试对您的数据进行绑定。发送“[1]”

+0

不幸的是,这也不起作用。在这两种情况下,如果不对数据进行字符串化并将其字符串化,Chrome会为我提供临时标题和表单数据,如[1]:或“[1]”:这两个请求都会挂起 – user3225501

0

请致电JSON.stringify,并提供contentType选项来指定该标题。

$.ajax({ 
    type: "POST", 
    url: "/endpoint?code=" + data, 
    data: JSON.stringify([1]), 
    contentType: 'application/json', 
    dataType: 'json', 
    success: function(response) { 
     console.log(response); 
    }.bind(this), 
    error: function(xhr, status, err) { 
     console.log(status + " " + err); 
    }.bind(this) 
}); 

BTW,而不是在每一个回调函数使用.bind(this),您可以使用选项context: this自动通过。

+0

嘿,谢谢。这对我来说并不是正确的答案,但它导致我发现问题的真正根源。我将自己的服务器上的流传输到另一个服务器,并将响应传回给管理员。沿线的某处失败。我会再调查一下。 – user3225501