1

私はこれらの機能を持っています。私の目的は、ロードメッセージをカスタマイズしたいので、ロード関数をスクリプトの残りの部分に分離することです

function loadContent(url)
{
    $('body').html('Loading');
    content = load(url);
    $('body').html(content);
}

function load(url)
{

    var result = null;
    var scriptUrl = url;
    $.ajax({
        url: scriptUrl,
        type: 'get',
        dataType: 'html',
        async: false,
        success: function(data) {
            result = data;
        } 
    });
    return result;
}

ここで、loadContent関数を呼び出します。

$(document).ready(function(e) {
    loadContent('index.php');    
});

問題は次の行にあります。

content = load(url);

関数load()がロードメッセージをオーバーライドするためです。

どうすればこれを解決できますか?みんなありがとう!

4

3 に答える 3

1

ajaxが成功すると、サーバーからデータを取得するのに時間がかかるため、戻り値は常にnull、つまり未定義になります。したがって、ajax成功関数内でContentをロードする必要があります。

function beforeLoad(){
   $('body').html('Loading');
}

function loadContent(data)
{
    $('body').html(data);
}

function load(url)
{
    var result = null;
    var scriptUrl = url;
    $.ajax({
        url: scriptUrl,
        type: 'get',
        dataType: 'html',
        async: false,
        success: function(data) {
            result = data;
            loadContent(result);

            // You can also set result as html without calling a loadContent

            $('body').html(data);
        } 
    });
}

$(document).ready(function(e) {
    beforeLoad();
    load('index.php');    
});
于 2012-06-10T17:20:13.337 に答える
0

これを試して:

function load(url)
{
    return $.ajax({
        url: url,
        type: 'get',
        dataType: 'html',
        async: false
    }).responseText;
}
于 2012-06-10T17:21:26.710 に答える