0

我正在尝试开发一个交互式网站,但我被困在应该添加和执行文件的地方。所以我在首页有以下代码:

$(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”)未触发。为什么?

4

1 回答 1

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);

你完成了

于 2012-12-23T17:42:30.920 回答