如何通过JSONP发送HTML

时间:2011-10-22 16:25:38

标签: javascript jquery jsonp

我试图通过AJAX请求发送模板的html,我需要使用JSONP来获取交叉原始错误,但是现在我需要将数据类型设置为jsonp。结果,ajax获取模板,我得到“Uncaught SyntaxError:Unexpected token<”当我在console.log(数据)时,我得到“jQuery1640440755290677771_1319300298806未被调用”。如何修复ajax调用以便我可以使用html for underscore.js模板来使用?

感谢。

$.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 :(得分:0)

将完整的json粘贴到jsonlint,看看是什么打破了它。例如,尝试在html上使用单引号。

答案 1 :(得分:0)

使用dataType属性的list选项。有关详细信息,请参阅the docs,但TL; DR使用datatype: "jsonp html"。否则,它会回来期待JSON,而不是HTML。

您可能需要将HTML内容包装为JSON,但您可能已经这样做了。

答案 2 :(得分:0)

JSONP的形式为:

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

即传递一个对象的函数调用。您所要做的就是将HTML模板分配给此对象的属性。结果应该是:

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

您必须相应地设置服务器。


另一种选择是在服务器上设置Access-Control-Allow-Origin: *响应头(然后当然不要在Ajax调用中将json指定为数据类型)。

有关详细信息,请参阅Cross-Origin Resource Sharing