2

updatepanel を使用してページをリロードします。私のマスターページでは、次のことを行います。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>  
<script src="App_Themes/Project/js/core.js"></script>
<script src="App_Themes/Project/js/libs/modernizr-1.6.min.js"></script>

ページを ajax (updatepanels) で部分的にリロードすると、このファイルはロードされません。そのため、スライダーは使用できません。

Ajax 呼び出しを行うときにこのファイルをロードする方法はありますか?

4

3 に答える 3

1

この機能を使用できます:

function ReloadScripts() {

    var scriptTag = document.getElementsByTagName('script');
    var src;

    for (var i = 0; i < scriptTag.length; i++) {
        src = scriptTag[i].src;
        scriptTag[i].parentNode.removeChild(scriptTag[i]);

        try {
            var x = document.createElement('script');
            x.type = 'text/javascript';
            x.src = src;
            //console.log(x)
            document.getElementsByTagName('head')[0].appendChild(x);
        }
        catch (e) {}
    }
};​

ajax call success メソッドでは、この関数を呼び出すだけです

$.ajax({
    type:"POST",
    dataType: 'json',
    error: function(data) {
        //do error stuff
    },
    success: function(data) {
        //do success stuff

        // at last call this
        ReloadScripts();
    }
});
于 2012-12-29T11:42:52.747 に答える
0

必要なのはjsライブラリをリロードすることではないと思います。ajax呼び出しによってロードされるいくつかの要素にいくつかのプロパティを適用する正確な関数を呼び出す必要があります。

例えば:

あなたのajaxは、次のようなページにいくつかのリンクを追加します

<a id="someLink">link</a>

そして、次のような js ライブラリ内のメソッドで、この要素を青に色付けするコードがあります。

function colorBlue() {
    $("a").css("color", "blue");
}

したがって、ここではライブラリ全体をリロードする必要はありません。ajax 呼び出しの後にこの関数を呼び出すだけです。

function makeAjax() {
    //here some ajax method is executed
    colorBlue();
}

以上で、必要な変更はライブラリ メソッド内で行われます。PS: js ライブラリ内のターゲット要素のクラス、タグ名、または ID を検索することで、特定の作業を要素に適用するメソッドを見つけることができます。そこにあなた

于 2014-11-04T13:25:18.520 に答える
0

すべての初期化/再初期化コードを js 関数呼び出しpageLoad()に入れると、すべての非同期ポストバックで呼び出されます。

function pageLoad()
{
    //do work 
}

$(document).ready() と pageLoad() は同じではありません!

于 2013-01-03T14:11:16.237 に答える