我尝试在 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) { });
这可能吗?
我尝试在 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) { });
这可能吗?
是的,可以看到$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})
迟到的答案,但是:data
仅适用于POST
请求。但是,您不能POST
使用 JSONP 发出请求——它的工作方式是将<script>
标签插入到您的 DOM 中,并src
设置为请求的 URL;当您的浏览器评估脚本时,它将调用回调参数(Angular 基本上替换JSON_CALLBACK
为指向您的成功函数的指针)。
TL;DR:使用 JSONP 向服务器发送内容的唯一方法是使用params
配置中的密钥。