2010-05-14 128 views
1

以此爲指導的結果:http://msdn.microsoft.com/en-us/library/dd250846.aspxJSONP請求

有人可以幫助我的jQuery的電話嗎?

我是否確實傳入了回調的javascript代碼,或者只是函數的名字?

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

要使用jQueryp和jQuery,請將​​替換爲JsonCallback=?。然後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 2010-05-14 15:38:40

+0

你打賭。玩的開心。 – dshaw 2010-05-14 16:32:08

1

jsonp:需要設置爲一個字符串(我認爲它也可以省略),因爲這只是用於接收JSONP的動態創建函數的名稱。

但形式參數$回調需要是一個函數的引用,因此無論您使用

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

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

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

而只是讓你知道,過度使用$真的很傷我的眼睛:)

此外,函數名稱以大寫開頭應該保留給'類',因爲許多語法檢查器會在大寫被調用的函數上投訴沒有new在前面。

+0

-1,沒有足夠的jQuery(不是真的) – Malfist 2010-05-14 13:58:27

+0

是$回調是一個函數的引用(如你匿名函數在您的第二代碼片段提交)。仍然得到一個'無效標籤'的錯誤,它說'無效標籤',吐出jing響應(在螢火蟲) – Blankman 2010-05-14 14:10:50

+0

但你修改了'jsonp:'屬性嗎?在你的代碼中,它將它設置爲函數引用,同時它需要設置爲一個字符串。 – 2010-05-14 14:24:17