Запрос Jsonp с использованием jquery для получения результатов поиска в сети bing - PullRequest
1 голос
/ 14 мая 2010

, используя это как руководство: http://msdn.microsoft.com/en-us/library/dd250846.aspx

Может ли кто-нибудь помочь мне с вызовом 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!');
};

По-прежнему выдается ошибка «недопустимая метка».

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

Чтобы использовать do jsonp с jQuery, замените JsonCallback=UserCallback на JsonCallback=?. Затем jQuery будет обрабатывать его как обычный запрос $ .ajax().

Я предлагаю начать с $.getJSON(), чтобы привыкнуть к API Bing и вернуться к $.ajax(), когда вы будете готовы интегрировать его с вашим приложением.

Используя пример из документации Bing API :

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); });
1 голос
/ 14 мая 2010

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

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

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

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

или

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

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

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

...