【发布时间】:2011-12-19 09:21:14
【问题描述】:
根据文档:
如果指定了 html,则检索到的任何嵌入的 JavaScript data 在 HTML 作为字符串返回之前执行。相似地, 脚本将执行从 服务器,然后什么也不返回。
如何预防? 我有 js 将修改通过 ajax 获得的内容。在返回 html 之前执行它没有任何意义,因为它没有可处理的内容(至少在我的情况下)。
我的代码:
function do_ajax(url)
{
$.ajax(
{
cache: false,
url : url,
success: function(response, status, xhr)
{
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf('script') > -1) {
try {
eval(response);
}
catch(error) { }
}
else
{
var edit_dialog = $('<div class="edit_dialog" style="display:hidden"></div>').appendTo('body');
edit_dialog.html(response);
edit_dialog.dialog({ modal:true, close: function(event, ui) { $(this).dialog('destroy').remove(); } });
}
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
}
ajax 接收到的脚本执行两次。首先由我在 eval(response) 中,然后 jquery 再次执行它(如文档中所述)
【问题讨论】:
-
你有你的代码示例吗?
-
上面添加的代码。所以,当我收到脚本时,它会执行两次。当我注释掉 eval(response) 时,它由 jquery 执行
-
您是否在
url中传递 GET 数据? -
是的,我用 url 传递 GET 数据
-
“它没有可处理的内容”到底是什么意思?您的意思是您正在检索的 js 引用了当前页面上的元素吗?
标签: javascript html ajax jquery