Angularjs。 JSONP。发送数据

时间:2013-09-07 17:39:43

标签: javascript angularjs jsonp

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

这可能吗?

2 个答案:

答案 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密钥。