API поиска Bing с использованием Jsonp не работает, недопустимая метка - PullRequest
3 голосов
/ 13 мая 2010

Борясь с запросом Bing json (поиск bing, а не карта), я получаю сообщение об ошибке «Неверная метка»

URL моего запроса:

var bingurl="http://api.search.live.net/json.aspx?Appid=##APIKEY##&query=Honda&sources=web";


 $.ajax({
            type: "GET",
            url: bingurl,
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
            success: function(data) {

                $callBack(data);
            },
            error: function(msg) {
                alert("error" + msg);
            }
        });

Firebug сообщает о «неверной метке», а затем выводит ответ json.

Понятия не имею, что не так? помощь оценена.

Ответы [ 2 ]

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

URL-адрес Bing API, который вы разместили, - это не JSONP, а просто JSON.

JSONP интерпретируется как необработанный JavaScript, и в этом случае синтаксис {"something": ... объекта JSON является не литералом объекта, а оператором блока с меткой, имя которой содержит кавычки (отсюда недействительность).

Насколько я понимаю , если вы хотите JSONP от Bing, вы должны сказать это, передав параметры ...&JsonType=callback&JsonCallback= (имя функции глобального обратного вызова).

(я также не уверен, что будет делать data: "{}", но я не думаю, что что-то хорошее.)

4 голосов
/ 17 марта 2011

Просто в духе поддержания актуальности, новый API BEST REST поддерживает поддержку jsonp, вам просто нужно убедиться, что параметр callback - это "jsonp". В jQuery просто измените атрибут jsonp в вашем вызове $ .ajax () на «jsonp», чтобы это работало.

<code>$.ajax({
    url: 'http://some.domain.com',
    dataType: 'jsonp',
    jsonp: 'jsonp'
});`
...