может как-то изменить имя функции обратного вызова? - PullRequest
3 голосов
/ 17 апреля 2011

Эй, я делаю вызов AJAX для "flickr.interestingness.getList", чтобы получить интересные фотографии, и это мой вызов AJAX.

function getPhoto()
{
$.ajax("http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521", 
        {
        dataType: "jsonp",
        //jsonp: false, jsonFlickrApi: "jsonpcallback",
        jsonpCallback: "jsonFlickrApi",
        });
}

function jsonFlickrApi(data)
{
alert(data.photos.photo);
}

и здесь "JsonFlickrApi" является предопределеннымфункция от Flickr, которая оборачивает объект json, который имеет кучу фотографий.Мой вопрос: могу ли я как-то переопределить предопределенную функцию «jsonFlickApi» и назвать функцию обратного вызова чем-то иным, чем «jsonFlickrApi», я думал, что параметр jsonp должен делать это после того, как я прочитал документацию jQuery, но просто не смог изменить ееили я не совсем понимаю, что делает параметр jsonp в вызове jQuery AJAX.спасибо

Ответы [ 2 ]

6 голосов
/ 17 апреля 2011

Вы рядом.Это прекрасно работает:

function getPhoto() {
    $.ajax({
        url: "http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521",
        dataType: "jsonp",
        jsonp: 'jsoncallback',
        success: function(data) {
            alert(data);
        }
    });
}

getPhoto();

DEMO

Поскольку документация описывает , вы можете установить собственное имя обратного вызовас параметром jsoncallback.Следовательно, мы должны установить jsonp: 'jsoncallback'.В документации jQuery вы можете обнаружить, что jQuery рекомендуется выбирать имя обратного вызова.Просто установите обратный вызов success и все готово.

2 голосов
/ 17 апреля 2011

Из документов Flickr API :

Если вы просто хотите использовать необработанный JSON без оболочки функции, добавьте параметр nojsoncallback со значением 1 к вашему запросу.

Чтобы задать собственное имя функции обратного вызова, добавьте параметр jsoncallback с нужным вам именем в качестве значения.

nojsoncallback=1    -> {...}
jsoncallback=wooYay -> wooYay({...});

Пример:

http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521&jsoncallback=myCallbackFun

Возвращает:

myCallbackFun({"photos":{"page":1, "pages":5, "perpage":100, "total":500, "photo":[{"id":"5623656271", "owner":"50725098@N08", "secret":"b67514798d", "server":"5143", "farm":6, "title":"Defying Gravity!!!", "ispublic":1, "isfriend":0, "isfamily":0}, {"id":"5624056667", "owner":"51832166@N03", "secret":"57ffca018d", "server":"5301", "farm":6, "title":"Navy Officers: Pearl Harbor", "i...
...