我正在尝试开发一个互动网站,但我仍然遇到了应该添加和执行文件的问题。所以我在首页中有以下代码:
$(document).ready(function(){
$('.info').live("click",function()
{
if ($('#country span.selected').text().length == 0)
alert("A company should be selected before continue!");
else {
$('.centered').hide();
$('.waitimg').show();
$.post('get_data.php',
{
type :$(this).attr("id"),
company : $('#country span.selected').text(),
company_id : $('#country').attr("value"),
country : $('#scountry span.selected').text(),
industry: $('#industry span.selected').text()
}, function(response)
{
//$('#resultarea').fadeOut();
setTimeout("finishAjax('resultarea','"+escape(response)+"')", 400);
}
);
}
return false;
});
});
和回调:
function finishAjax(id, response) {
$('#waitimg').hide();
$.getScript("js/script.js");
$('#'+id).html(unescape(response));
$('#'+id).fadeIn();
}
它应该从js / script.js执行脚本,但事实并非如此。使用Firebug我可以看到文件已加载但是在script.js中的简单警报(“hello world”)未被触发。为什么呢?
答案 0 :(得分:1)
setTimeout
期望引用到函数,而不是字符串作为第一个参数。替换:
setTimeout("finishAjax('resultarea','"+escape(response)+"')", 400);
使用:
setTimeout(function()
{
return finishAjax.apply(this, ['resultarea', escape(response)]);//call as though finishAjax was callback --> preserve context
//or, if you don't care about the context:
return finishAjax('resultarea', escape(response));
}, 400);
你已经完成了