0

インタラクティブな Web サイトを開発しようとしていますが、ファイルを追加して実行する必要がある場所で行き詰まりました。したがって、ヘッド ページに次のコードがあります。

$(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 に答える