2010-05-14 3 views
1

используя это в качестве руководства: http://msdn.microsoft.com/en-us/library/dd250846.aspxJSONP запрос с помощью JQuery для извлечения Бинг веб-результаты

может кто-то помочь мне с вызовом 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); 
      } 
     }); 

}; 

Update

Ok поэтому я изменил это:

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

Чтобы использовать do jsonp с jQuery, замените JsonCallback=UserCallback на 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

+0

Вы ставите. Повеселись. – dshaw

1

jsonp: должен быть установлен в строку (я думаю, что это также можно оставить без внимания), так как это просто имя динамически созданной функции, используемой для приема JSONP.

Но формальный параметр $ CallBack должен быть ссылкой на функцию, так как вы используете

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

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

или

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

И только так вы это знаете, чрезмерное использование $ действительно болит мои глаза :)

Кроме того, имена функций, начинающиеся с капитала, должны быть зарезервированы для «классов», так как многие синтаксические контролы будут жаловаться на функции со звонками без new спереди.

+0

-1, не достаточно JQuery (не совсем) – Malfist

+0

Да $ CallBack является ссылкой на функцию (анонимные функции, как вы представили в своем 2-й фрагмент кода). все еще получая ошибку «недопустимый ярлык», он говорит «недопустимый ярлык», который выплескивает ответ json от bing (в firebug) – Blankman

+0

Но вы изменили свойство 'jsonp:'? В коде у вас есть ссылка на функцию, в то время как она должна быть установлена ​​в строку. –

 Смежные вопросы

  • Нет связанных вопросов^_^