1

我尝试在 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) { });

这可能吗?

4

2 回答 2

9

是的,可以看到$http.jsonp 函数。简而言之,你应该做类似的事情

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

请注意,您必须将callback=JSON_CALLBACK设置为 http 调用的查询参数,以便 Angular 发挥其魔力。

要与您的请求一起发送数据,这取决于您是否需要查询参数 (1)、请求消息数据 (2) 或两者 (3)。

情况1 :

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

根据文档“将在 url 之后转换为 ?key1=value1&key2=value2 的字符串或对象的映射。如果该值不是字符串,它将被 JSON 化。”

案例2:

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

案例3:

$http.jsonp('http://www.example.com?callback=JSON_CALLBACK', {params : Object | String, data : Object | String})
于 2013-09-07T17:56:05.070 回答
6

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

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

于 2014-02-25T02:42:29.643 回答