我尝试在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) { });
这可能吗?
答案 0 :(得分:9)
是的,可以看到$http.jsonp function。总之,你应该做一些像
这样的事情$http.jsonp('http://www.example.com?callback=JSON_CALLBACK')
.success (function(data, ...) {
//your data here
...
})
请注意,您必须将 callback = JSON_CALLBACK 设置为您的http调用的查询参数,以便角色能够发挥其魔力。
要与您的请求一起发送数据,它将取决于您是否需要查询参数(1),请求消息数据(2)或两者(3)。
案例1:
$http.jsonp('http://www.example.com?callback=JSON_CALLBACK', {params : Object | String})
根据文档“将转向的字符串或对象的映射?key1 = value1& key2 = value2后的url。如果该值不是字符串,则它将被JSONified。”
案例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})
答案 1 :(得分:6)
延迟回答,但是:data
仅适用于POST
次请求。但是,您无法使用JSONP发出POST
请求 - 它的工作方式是将<script>
标记插入到您的DOM中,并将src
设置为请求的网址;当您的浏览器评估脚本时,它将调用回调参数(Angular基本上用指向您的成功函数的指针替换JSON_CALLBACK
)。
TL; DR:使用JSONP将内容发送到服务器的唯一方法是使用配置中的params
密钥。