Как отправить HTML через JSONP - PullRequest
3 голосов
/ 22 октября 2011

Я пытаюсь отправить html шаблона через запрос AJAX, и мне нужно использовать JSONP, чтобы не получить ошибку перекрестного источника, но сейчас мне нужно установить тип данных как jsonp.В результате ajax получает шаблон, и я получаю «Uncaught SyntaxError: Unexpected token <», и когда я получаю console.log (data), я получаю «jQuery1640440755290677771_1319300298806 не был вызван».Как я могу исправить вызов ajax, чтобы я мог получить свой HTML для шаблона underscore.js для использования? </p>

Спасибо.

$.ajax({
    url: "url",
    cache: "false",
    crossDomain:"true",
    dataType: "jsonp",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "f00");
    },
    success: function(html) {
        console.log(html);
    },
    error: function(data) {
        console.log(data);
    },

Ответы [ 3 ]

0 голосов
/ 22 октября 2011

Используйте опцию списка свойства dataType.См. документы для деталей, но TL; DR используется datatype: "jsonp html".В противном случае он будет ожидать возвращения JSON, а не HTML.

Вероятно, вам придется обернуть содержимое HTML как JSON, но, возможно, вы уже это делали.

0 голосов
/ 22 октября 2011

JSONP имеет вид:

funcName({"key": "value"})

то есть вызов функции, передающий объект. Все, что вам нужно сделать, это назначить свой HTML-шаблон свойству этого объекта. Результат должен быть:

funcName({"template": "<p>Template</p>"})

Вы должны настроить свой сервер соответственно.


Другой вариант - установить заголовок ответа Access-Control-Allow-Origin: * на вашем сервере (и, конечно, не указывать json как тип данных в вызове Ajax).

См. Обмен ресурсами между источниками для получения дополнительной информации.

0 голосов
/ 22 октября 2011

Вставьте свой полный json в jsonlint и посмотрите, что его сломает.Попробуйте использовать одинарные кавычки в HTML, например.

...