2010-05-14 6 views
1

가 가이드로 이것을 사용하여 결과 : http://msdn.microsoft.com/en-us/library/dd250846.aspxJSONP 요청은

누군가가 JQuery와 통화를 도와 줄 수 있습니까?

사실 콜백의 자바 스크립트 코드 또는 함수의 이름 만 전달합니까?

BingSearch = function($bingUrl, $bingAppID, $keyword, $callBack) { 

     $bingUrl = $bingUrl + "?JsonType=callback&JsonCallback=" + $callBack + "&Appid=" +     $bingAppID + "&query=" + encodeURI($keyword) + "&sources=web"; 


$.ajax({ 
      dataType: 'jsonp', 
      jsonp: $callBack, 
      url: $bingUrl, 
      success: function(data) { 
       alert('success'); 
       $callBack(data); 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       alert("error: " + textStatus); 
      } 
     }); 

}; 

확인 업데이트 나는이 변경 있도록 : 그것은 좋아 호출

BingSearch = function(bingUrl, bingAppID, keyword, callback) { 

    var url = bingUrl + "?method=?&JsonType=callback&Appid=" + bingAppID + "&query=" + encodeURI(keyword) + "&sources=web"; 

    $.getJSON(url, callback); 

}; 

: 아직도 '잘못된 라벨'오류가 발생

BingSearch(url, appid, searchkeyword, function(searchresults) { 

    alert('yes!'); 
}; 

.

답변

4

jQuery와 함께 jsonp를 사용하려면 JsonCallback=UserCallbackJsonCallback=?으로 바꿉니다. 그런 다음 jQuery가 일반 $ .ajax() 요청과 같이 처리합니다.

$.getJSON()으로 시작하여 Bing API에 익숙해지고 응용 프로그램과 통합 할 준비가되었을 때 $.ajax()으로 다시 이동하는 것이 좋습니다.

Bing API docs에서 예를 사용 :

var apikey = 'YOUR_API_KEY'; 
var url = 'http://api.bing.net/json.aspx?AppId='+apikey+'&Version=2.2&Market=en-US&Query=testign&Sources=web+spell&Web.Count=1&JsonType=callback&JsonCallback=?'; 
$.getJSON(url, function(data) { console.log(data); }); 
+0

+10000000000000000 감사합니다. – Blankman

+0

내기를 걸었습니다. 재미있게 보내십시오. – dshaw

1

jsonp:은 JSONP를 수신하는 데 사용되는 동적으로 생성 된 함수의 이름 일 뿐이므로 문자열로 설정해야합니다.

그러나 형식 매개 변수 $ 콜백 함수에 대한 참조 할 필요가 있으므로 하나는

function callback(result){ /*processResultHere*/ } 

BingSearch(..,..,.., callback); 

또는

BingSearch..,..,.., function(result){ /*processResultHere*/ }); 

그리고 당신이 그것을 알고 너무

, $의 과도한 사용을 사용 정말로 내 눈을 아프게한다.

또한 대문자로 시작하는 함수 이름은 'classes'를 위해 예약되어야한다. 많은 문법 검사기는 대문자가 호출되는 함수에 대해 불평 할 것이다. new 앞에 ...

+0

-1, 충분하지 JQuery와는 (정말) – Malfist

+0

예 $ 콜백 함수에 대한 참조입니다 (당신처럼 익명 함수는 2 차 코드에 표시). 여전히 '잘못된 라벨'오류가 발생하고 있는데, bing의 json 응답을 울리는 '잘못된 라벨'이 나타납니다 (방화성 단추) – Blankman

+0

하지만 'jsonp :'속성을 수정 했습니까? 코드에서 함수 참조를 문자열로 설정해야하는 동안 함수 참조로 설정했습니다. –