Я сталкиваюсь с проблемами для передачи контекста объекта JavaScript в обработчика обратного вызова JSONP ajax запрос, когда ajax поставщик предопределяет его обратный вызов. (Flickr является поставщиком услуг).
Я дам упрощенный пример:
function Person(anId) { this.name; this.id = anId; var self = this; this.loadName = function() { $.ajax({ url: "jsonp.json", dataType: "jsonp", jsonpCallback : "handleJSON", data : {id: this.id}, context: self, success: function (data) { self.name = data.name; } }); } } var handleJSON = function(data) { console.log("received " + data.name ); } var a = new Person(234); a.loadName(); var b = new Person(345); b.loadName();
Пример выше работ отлично, консоль производит строку функции handleJSON. Но в этой функции у меня нет ссылки на исходный объект, который это называет ею. Я хочу это, функция успеха вызвана вместо этого: здесь я могу обратиться к сам переменная.
Существует несколько возможных решений, но я не получаю выполнения.
В настоящее время я находил решение с jquery-jsonp из кода Google. Но тем не менее мне очень любопытно, как решить проблему, как описано в 2. Поскольку я думаю, что ссылка jQuery указывает, что могла быть обработана как этот. Что делает меня надежным на меньшем количестве сторонних библиотек.
Кто-то может показать мне, как получить доступ к контексту в обработчике обратного вызова JSONP с помощью jQuery?