我正在尝试通过AJAX请求发送模板的html,我需要使用jsonp来避免出现跨源代码错误,但现在我需要将数据类型设置为JSONP。结果,ajax得到了模板,我得到了“未捕获的SyntaxError:意想不到的令牌<”,当我调用(console.log)时,我得到了"jQuery1640440755290677771_1319300298806未被调用“。我如何修复ajax调用,以便让underscore.js模板使用我的html?
谢谢。
$.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);
},发布于 2011-10-23 00:31:07
将完整的json粘贴到jsonlint,看看是什么破坏了它。例如,尝试在html上使用单引号。
发布于 2011-10-23 00:36:33
使用dataType属性的list选项。有关详细信息,请参阅the docs,但TL;DR使用的是datatype: "jsonp html"。否则,它将期望返回JSON,而不是HTML。
您可能需要将HTML内容包装为JSON,但您可能已经这样做了。
发布于 2011-10-23 00:54:13
JSONP的形式如下:
funcName({"key": "value"})也就是说,传递对象的函数调用。您所要做的就是将HTML模板分配给这个对象的一个属性。结果应该是:
funcName({"template": "<p>Template</p>"})您必须相应地设置服务器。
另一种选择是在服务器上设置Access-Control-Allow-Origin: *响应头(当然,不要在Ajax调用中将json指定为数据类型)。
有关详细信息,请参阅。
https://stackoverflow.com/questions/7860891
复制相似问题