아약스 제공자가 콜백을 미리 정의 할 때 JSONP 아약스 요청의 콜백 핸들러에 자바 스크립트 객체 컨텍스트를 전달하는 문제가 발생합니다. Flickr는 서비스 제공 업체입니다.개체 컨텍스트를 jQuery.ajax에 전달하는 방법 JSONP 콜백?
는 위의 예제는 완벽하게 작동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가 생성 한 콜백 이름을 가로 채서 jsonpCallback 매개 변수의 값으로 사용합니다. 이 함수는 지정된 성공 함수에 위임한다고 가정합니다. 여기에서이 함수에 액세스 할 수 있습니다. 그러나 그 생성 된 이름을 얻는 방법을 알지 못합니다.
- 예에서 설명한 것처럼 컨텍스트 개체를 지정합니다. jQuery docs는이 객체가 콜백 핸들러에서 사용할 수 있다고 말합니다. 그러나 나는이 컨텍스트가 어떻게 노출되는지를 알 수 없다. 내 예제에서 handleJSON 기능.
현재 Google 코드에서 jquery-jsonp로 해결책을 찾았습니다. 그러나 여전히 2.에서 설명한 문제를 해결하는 방법에 대해 매우 궁금합니다. jQuery 참조가 그렇게 처리 될 수 있다고 생각하기 때문입니다. 왜 제 3 자 라이브러리가 적게 든 신뢰할 수 있습니다.
누군가 jQuery를 사용하여 JSONP 콜백 핸들러에서 컨텍스트에 액세스하는 방법을 보여 줄 수 있습니까?
빠른 답장을 보내 주셔서 감사합니다. 귀하의 답변은 사소한 것처럼 보이지만 내 서비스 제공 업체는 자체 콜백 인 jsonFlickrApi ({json})에서 JSON을 래핑합니다. 생성 된 콜백 jQuery 이름은 무시됩니다. 'jsoncallback = handleJSON'매개 변수를 제공하면 콜백 이름에 영향을 미칠 수 있지만 전역 범위 함수 이름 만 전달할 수 있고 개체 범위 함수 이름을 전달해야하기 때문에 옵션이 없습니다. – TheHobbyist
@ TheHobbieist :이 경우'jsonPCallback' 속성을 사용하여''jsonFlickrApi''를 함수 이름으로 지정하지만 함수를 만들지는 마십시오. 'ajax' 메소드는 당신을 위해 함수를 생성 할 것입니다. – Guffa
당신은 남자입니다. 매우 감사합니다. – TheHobbyist