标签: jsonp

什么是JSONP,为什么创建它?

我理解JSON,但不了解JSONP.维基百科关于JSON的文档是JSONP的最佳搜索结果.它说:

JSONP或"带填充的JSON"是JSON扩展,其中前缀被指定为调用本身的输入参数.

咦?什么电话?这对我没有任何意义.JSON是一种数据格式.没有电话.

第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP:

JSONP是脚本标记注入,将响应从服务器传递到用户指定的函数.

我可以理解这一点,但它仍然没有任何意义.


那么什么是JSONP?它为什么被创建(它解决了什么问题)?为什么我会用它?


附录:我刚刚在维基百科上为JSONP创建了一个新页面 ; 根据jvenema的回答,它现在对JSONP进行了清晰而全面的描述.

javascript json jsonp terminology

2040
推荐指数
8
解决办法
46万
查看次数

XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用Origin null

我正在开发一个页面,通过jQuery的AJAX支持从Flickr和Panoramio中提取图像.

Flickr端工作正常,但当我尝试$.get(url, callback)从Panoramio时,我在Chrome的控制台中看到一个错误:

XMLHttpRequest无法加载http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150.Access-Control-Allow-Origin不允许使用null.

如果我直接从浏览器查询该URL,它可以正常工作.发生了什么,我可以解决这个问题吗?我是不是错误地编写了我的查询,或者这是因为Panoramio会妨碍我正在尝试做的事情?

Google没有在错误消息上显示任何有用的匹配项.

编辑

以下是一些显示问题的示例代码:

$().ready(function () {
  var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150';

  $.get(url, function (jsonp) {
    var processImages = function (data) {
      alert('ok');
    };

    eval(jsonp);
  });
});
Run Code Online (Sandbox Code Playgroud)

您可以在线运行该示例.

编辑2

感谢Darin对此的帮助. 上面的代码错了. 请改用:

$().ready(function () {
  var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150&callback=?';

  $.get(url, function (data) {
    // can use 'data' in here...
  });
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery jsonp xmlhttprequest cors

535
推荐指数
8
解决办法
74万
查看次数

用外行人的话可以解释一下JSONP是什么吗?

我知道JSONPJSON填充.

我理解JSON是什么,以及如何使用它jQuery.getJSON().但是,我不明白callback引入JSONP时的概念.

任何人都可以向我解释这是如何工作的?

jquery jsonp

411
推荐指数
3
解决办法
14万
查看次数

JSON和JSONP有什么区别?

格式明智,文件类型明智和实用明智吗?

javascript json jsonp

384
推荐指数
7
解决办法
20万
查看次数

getJSON调用中的错误处理

如何处理getJSON调用中的错误?我试图使用jsonp引用跨域脚本服务,你如何注册错误方法?

jquery jsonp cross-domain getjson

183
推荐指数
4
解决办法
22万
查看次数

使用.ajax()和JSONP的基本示例?

有人可以帮我解决如何开始使用JSONP吗?

码:

$('document').ready(function() {
    var pm_url = 'http://twitter.com/status';
    pm_url += '/user_timeline/stephenfry.json';
    pm_url += '?count=10&callback=photos';
    var photos = function (data) {
     alert(data);
    };
    $.ajax({
        url: pm_url,
        dataType: 'jsonp',
        jsonpCallback: 'photos',
        jsonp: false,
    });
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/R7EPt/6/

应该产生一个警报,据我可以从文档中解决:不是(但也没有产生任何错误).

谢谢.

ajax json jsonp

183
推荐指数
3
解决办法
36万
查看次数

将jQuery Post发送到Google API的Access-Control-Allow-Origin错误

我读了很多关于'Access-Control-Allow-Origin'的错误,但我不明白我要解决的问题:(

我正在玩Google Moderator API,但是当我尝试添加新的系列时,我会收到:

XMLHttpRequest cannot load 
https://www.googleapis.com/moderator/v1/series?key=[key]
&data%5Bdescription%5D=Share+and+rank+tips+for+eating+healthily+on+the+cheaps!
&data%5Bname%5D=Eating+Healthy+%26+Cheap
&data%5BvideoSubmissionAllowed%5D=false. 
Origin [my_domain] is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

我尝试使用和不使用回调参数,我尝试在标题中添加"Access-Control-Allow-Origin*".我不知道如何在这里使用$ .getJSON,如果申请,因为我必须添加Authorization标头,我不知道怎么做没有来自$ .ajax的beforeCall:/

这个黑暗的任何光明吗?

那是代码:

<script src="http://www.google.com/jsapi"></script>

<script type="text/javascript">

var scope = "https://www.googleapis.com/auth/moderator";
var token = '';

function create(){
     if (token == '')
      token = doCheck();

     var myData = {
      "data": {
        "description": "Share and rank tips for eating healthily on the cheaps!", 
        "name": "Eating Healthy & Cheap", 
        "videoSubmissionAllowed": false
      }
    };

    $.ajax({

        url: 'https://www.googleapis.com/moderator/v1/series?key='+key,
        type: 'POST',
        callback: '?',
        data: …
Run Code Online (Sandbox Code Playgroud)

ajax jquery jsonp google-api cors

137
推荐指数
4
解决办法
56万
查看次数

使用ASP.NET Web API的JSONP

我正在使用Web API在ASP.MVC MVC 4中创建一组新服务.到目前为止,这很棒.我已经创建了该服务并使其工作,现在我正在尝试使用JQuery来使用它.我可以使用Fiddler取回JSON字符串,它似乎没问题,但是因为该服务存在于一个单独的站点上,所以尝试使用"不允许"的JQuery错误调用它.所以,这显然是我需要使用JSONP的情况.

我知道Web API是新的,但我希望有人可以帮助我.

如何使用JSONP调用Web API方法?

jquery jsonp asp.net-mvc-4 asp.net-web-api

136
推荐指数
7
解决办法
6万
查看次数

带CORS的IE9 jQuery AJAX返回"访问被拒绝"

以下适用于IE以外的所有浏览(我在IE 9中测试).

jQuery.support.cors = true;
...
        $.ajax(
            url + "messages/postMessageReadByPersonEmail",
            {
                crossDomain: true,
                data: {
                    messageId       : messageId,
                    personEmail     : personEmail
                },
                success: function() {
                    alert('marked as read');
                },
                error: function(a,b,c) {
                    alert('failed');
                },
                type: 'post'
            }
        );
Run Code Online (Sandbox Code Playgroud)

我有另一个使用的函数dataType: 'jsonp',但我不需要在这个AJAX调用上返回任何数据.我的最后一招将是返回JSONP中包含的一些乱码,以使其正常工作.

任何想法为什么IE搞砸了没有返回数据的CORS请求?

jquery jsonp cross-domain cors internet-explorer-9

123
推荐指数
3
解决办法
14万
查看次数

为JSONP提供服务的最佳内容类型?

我有一个web服务,在没有指定回调的情况下调用时,将返回一个使用JSON字符串application/json作为内容类型.

当指定回调时,它会将JSON字符串包装在回调函数中,因此它不再是真正有效的JSON.我的问题是,我应该像application/javascript这种情况一样服务还是仍然使用application/json

javascript json jsonp

119
推荐指数
2
解决办法
5万
查看次数