Angularjs.JSONP.发送数据

Exy*_*Tab 1 javascript jsonp angularjs

我尝试在AngularJS中使用JSONP请求发送数据.

$http({ method: 'jsonp', 
url: 'http://test.local/?callback=JSON_CALLBACK',  /// Add '?callback=JSON_CALLBACK'
data: JSON.stringify(request) })
.success(function (data, status, headers, config) { });
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Nic*_*RIC 9

是的,可以看到$ http.jsonp函数.总之,你应该做点什么

$http.jsonp('http://www.example.com?callback=JSON_CALLBACK')
  .success (function(data, ...) {
    //your data here
    ...
  })
Run Code Online (Sandbox Code Playgroud)

请注意,您必须设置回调= JSON_CALLBACK以便角度做它的魔力为你的HTTP调用的查询参数.

与您的请求一起发送的数据,如果你想这将取决于查询参数(1),请求消息数据(2)或二者(3).

情况1 :

$http.jsonp('http://www.example.com?callback=JSON_CALLBACK', {params : Object | String})
Run Code Online (Sandbox Code Playgroud)

按照文档"字符串或对象的地图将被转向网址后?键1 =值&键2 =值.如果该值不是一个字符串,这将是JSONified."

案例2:

$http.jsonp('http://www.example.com?callback=JSON_CALLBACK', {data : Object | String})
Run Code Online (Sandbox Code Playgroud)

案例3:

$http.jsonp('http://www.example.com?callback=JSON_CALLBACK', {params : Object | String, data : Object | String})
Run Code Online (Sandbox Code Playgroud)

  • 问题在于发送数据,而不是处理收到的答案 (3认同)

Man*_*ert 6

迟到的答案,但是:data仅适用于POST请求.但是,您无法POST使用JSONP发出请求 - 它的工作方式是将<script>标记插入到DOM中并src设置为请求的URL; 当您的浏览器评估脚本时,它将调用回调参数(Angular基本上JSON_CALLBACK由指向您的成功函数的指针替换).

TL; DR:使用JSONP将内容发送到服务器的唯一方法是使用params配置中的密钥.