标签: jsonp

使用JQuery.getJSON指定回调参数

有没有办法在使用JQuery的getJSON方法时指定回调参数的值?

例如:

$.getJSON('/content?callback=?', function(data) {});
Run Code Online (Sandbox Code Playgroud)

生成以下URL:

content?callback=jQuery15108431726952168015_1299633045933&_=1299633046552
Run Code Online (Sandbox Code Playgroud)

此处的参数由库随机生成.

我想指定自己的回调参数.

我想为每个请求使用相同的回调参数,所以我可以积极地缓存响应.

jquery json jsonp

2
推荐指数
1
解决办法
5970
查看次数

在ZEND中处理JSONP调用

无法通过搜索(或谷歌)找到答案,所以我会问自己.是否可以处理对zend框架的JSONP调用?

只找到这个页面:

http://framework.zend.com/wiki/display/ZFPROP/Zend_Json_Server+-+Lode+Blomme

但我不确定它是否已经实施!?

谢谢

php ajax jquery jsonp zend-framework

2
推荐指数
1
解决办法
3619
查看次数

如何使用跨站点脚本的JQuery制作ajax?

我有一个问题,我必须从这里得到json:

http://templodasdeusas.com.br/game/srv/game.php?srv=home

还有一个选项可以添加回调函数名称,如:

http://templodasdeusas.com.br/game/srv/game.php?srv=home&callback=myFunction

这将返回类似:myFunction({'msgd':'value'});

我想用jQuery制作um ajax请求,这可能吗?我仍然收到正常$ .ajax请求的错误,我被告知我必须使用jsonp或跨站点脚本...它是如何工作的?有人有例子吗?TNX!

javascript ajax jquery json jsonp

2
推荐指数
1
解决办法
9917
查看次数

为什么这个跨域请求解决方法有效?

这篇John Resig文章中,他正在使用javascript处理字典大小的单词列表,并且他正在通过来自CDN的ajax加载内容.

这些单词加载了分隔单词的换行符.然后他说跨域失败:

但是有一个问题:我们无法从CDN加载我们的字典!由于CDN位于另一个服务器上(或者在另一个子域上,就像这里的情况一样),我们受浏览器的跨源策略的限制,禁止这些类型的请求.所有这些都不会丢失 - 通过对字典文件的简单调整,我们可以跨域加载它.

首先,我们用空格替换字典文件中的所有结束行.其次,我们用JSONP语句包装整行.因此最终结果看起来像这样:

dictLoaded('aah aahed aahing aas aals ay ... zyzzyvas zzz');

这允许我们对文件执行Ajax请求并使其按预期工作 - 同时仍然受益于浏览器提供的所有缓存和压缩.

所以,如果我正确地阅读这个,只是简单地dictLoaded('original content')在原始内容周围添加他的方法会导致ajax请求不会失败.

那是(把它变成一个函数+参数)真的需要它吗?为什么JSONP解决了跨域访问限制的问题?

javascript ajax jsonp cross-domain

2
推荐指数
1
解决办法
1577
查看次数

为什么这个URL不属于同一原产地政策?

我从JSON-P(来自JSON-P VS JSON维基百科)了解到的是 - JSON-P的发明是为了克服浏览器相同原始策略并从另一个域加载JSON对象.stackoverflow上有一篇文章,展示了JSON-P调用的工作原理.看来,如果我?callback=?从URL中删除,JSON-P请求就像普通的JSON调用一样,因此被相同的源策略拒绝.这个实例证明了这一点.

现在我有另一个URL:https://graph.facebook.com/100001612121705.json 我使用以下方法从中加载数据(请访问此处获取实例):

$(document).ready(function() {
    $.getJSON("https://graph.facebook.com/100001612121705", null,
    function(data) {
        $.each(data, function(key, val) { 
            alert(key + ' is ' + val);
        });
    });
});?
Run Code Online (Sandbox Code Playgroud)

请注意,我没有使用?callback?带有我的URL,但此请求仍然可以从另一个域获取JSON数据!这对我来说非常令人惊讶.任何人都可以解释为什么这个请求不被同源原则规则拒绝?

javascript jquery json jsonp cross-domain

2
推荐指数
1
解决办法
242
查看次数

AJAX在获取请求时失败:JSONP

我在运行我的django应用程序的同一主机上运行了一个休息服务器(python bottle).从我的django应用程序我正在使用ajax执行get请求,但请求失败,即使我可以在我的休息服务器上看到请求的状态成功(返回代码200,成功)

我的Ajax代码:

            $.ajax({
               url: 'http://hostname:port/ListVms/',
               crossDomain: true, 
               contentType: "application/json",
               dataType: 'jsonp',
               success: function(data) {
                   alert('worked');
               },
               error: function() {
                   alert("Sorry, error retrieving!");
               }
           });
Run Code Online (Sandbox Code Playgroud)

Python Rest方法:

            @route('/ListVms/', method='GET')
            def get_event():
                return json.dumps(JS)
Run Code Online (Sandbox Code Playgroud)

休息服务的输出:

            [22/Aug/2012 10:25:45] "GET /ListVms/?callback=jQuery17102901058990901989_1345656355311&_=1345656355356 HTTP/1.1" 200 44
Run Code Online (Sandbox Code Playgroud)

ajax jquery json jsonp

2
推荐指数
1
解决办法
476
查看次数

此服务器jsonp响应是否有效?

我是向客户端发送请求的客户端.我的最终目标是在jsonp中发送请求.

这是我发送请求时得到的服务器响应?accept=json(并且因为它不是jsonp而得到无效的会话错误)

{"errorCode":-15,"errorDescription":"SessionNotFoundException - Session not found","success":false,"payload":null}
Run Code Online (Sandbox Code Playgroud)

我可以读它,它很好.

但是,这是服务器响应?accept=jsonp:

jQuery171024326910870149732_1351429007451({"action":"", "type":"", "callerId":""}, {"errorCode":0,"errorDescription":"OK","success":true,"payload":null});
Run Code Online (Sandbox Code Playgroud)

它是这两个对象的形式,我不知道如何阅读:{a},{b}.

当我使用jQuery ajax调用时,服务器数据的输出只是{a}部分:

Object {action: "", type: "", callerId: ""}

我的两个问题是:

  1. 具有2个对象({a},{b})的服务器响应是否有效?服务器人通过发送那种对象会犯错误还是有效?
  2. 我如何读取jsonp对象?我的ajax调用有什么问题,我似乎无法正确阅读它?

这是我使用的ajax调用:

$.ajax({
            url:url,
            dataType:'jsonp',
            success:function(data){
                console.log("data is,"data")
                //if the call was success
                if (data.success) {

                    //if errors
                }   else {

                }
            }
        } 
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery json jsonp

2
推荐指数
1
解决办法
1969
查看次数

如何使用没有根节点的JSON呈现Mustache模板

我正在构建一个小页面,使用jquery的getJSON调用API,然后使用胡子模板(至少是计划)呈现数据.但是我的JSON没有节点根,并且无法使用正确的胡子机制循环访问JSON响应数据.

//start
file : jsonresponse.jsonp

?([{"CountryIsoAlpha3Code":"AFG","CountryName":"Afghanistan"},
{"CountryIsoAlpha3Code":"ALA","CountryName":"Åland Islands"},
{"CountryIsoAlpha3Code":"ALB","CountryName":"Albania"}])
//end

//start
file: tmpl.mustache

<option value="{{CountryIsoAlpha3Code}}">{{CountryName}}</option>
//end

//start
file: render.js

$.getJSON(jsonresponse.jsonp, function(data) { 
   var tpl = tmpl.mustache,
   i=data.length,
   html = '';
     while(i--){
       html = html + mustache.render(tpl, data[i]);
     }

//end
Run Code Online (Sandbox Code Playgroud)

我意识到这是完全错误的(仅在模板使用中,假设我实际上正在传递数据和模板)但它确实有效.但如果我想做以下怎么办...我该怎么做!?:

//start
//file : daydreamer.mustache

<h1>This title is only awesome when it's rendered once</h1>
{{#}}  //no root node attempt at recursive templating rendering
     <option value="{{CountryIsoAlpha3Code}}">{{CountryName}}</option>
{{/}}

//end  
Run Code Online (Sandbox Code Playgroud)

如果不清楚请告诉我,我知道一个可怜的问题是眼睛疼痛.我会尽快编辑.谢谢.

jquery json jsonp mustache

2
推荐指数
1
解决办法
1214
查看次数

AngularJS中的JSONP请求不像jQuery那样工作

我想用AngularJS的$ http服务请求Dailymotion API,但它似乎不像jQuery那样工作.

var url = 'https://api.dailymotion.com/videos?fields=id,audience,onair&ids=xzttq2_c,xrw2w0';
Run Code Online (Sandbox Code Playgroud)

请求使用jQuery

jQuery.ajax({
  type: 'GET',
  url: url,
  dataType: 'jsonp',
  success: function(data) {
    console.log('Success', data);
  },
  error: function(data) {
    console.log('Error', data);
  }
});
Run Code Online (Sandbox Code Playgroud)

结果

使用jQuery,它工作正常.我不必使用回调.

Success 
Object {page: 1, limit: 10, explicit: false, has_more: false, list: Array[2]}
Run Code Online (Sandbox Code Playgroud)

请求使用AngularJS

$http({
    method: 'jsonp',
    url: url,
    responseType: "json"
}).
success(function (data) {
    console.log('Success', data);
}).
error(function (data) {
    console.log('Error', data);
});
Run Code Online (Sandbox Code Playgroud)

结果

但是对于Angularjs,它并没有像我预期的那样工作.

Uncaught SyntaxError: Unexpected token : 
Run Code Online (Sandbox Code Playgroud)

jquery jsonp angularjs angularjs-service

2
推荐指数
1
解决办法
4135
查看次数

JSONP与Django的响应

我正在尝试做一些编码,进一步操作,等等等等,最后得到json对象并返回一个Jsonp(用javascript函数包装的json对象)

我设法创建直到json对象,这是

 js_on = {"name": "xxx","job":"unemployed", "remarks": "enjoying_life"}.
Run Code Online (Sandbox Code Playgroud)

我坚持做JSONP部分.我读过的教程非常混乱,需要多行编码.是真的那么复杂还是有更简单的方法呢?我的JSONP代码从以下开始.

 callback = request.GET.get('callback')
 if callback:
 ......
 ......
 return(HttpResponse(...,content_type ='application/javascript'))
Run Code Online (Sandbox Code Playgroud)

在服务器端,我使用的是Python和Django框架.谢谢.

javascript python django json jsonp

2
推荐指数
1
解决办法
3958
查看次数