2017-05-19 5 views
0

私はマスターページと子ページを持っています。
メニューはマスターページにあります。
Ajaxコールでアクセス権を取得して、メニューリンクを非表示にします。javascript beforページをフルロード

$.ajax({ 

    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Query.asmx/GetUserPermissions", 
    data: "{}", 
    dataType: "json", 
    success: function (Result) { 
    Perms = Result.d; 
    var pageName = location.pathname.substring(1).toLowerCase(); 
    if (Perms.indexOf('4') != -1) { 
     $("#liCars").show(); 
    } 
    else { 
     if (pageName == 'webform2') { 
     window.location = 'default.aspx' 
     } 
    } 
    }, 
    error: function (Result) { 
    alert(Result.d); 
    } 
}); 

問題は何ですか?
問題は、ユーザーがメニューなしでurlと入力すると、ページが完全に読み込まれてからデフォルトにリダイレクトされることです。
document.ready上にあるので正常だと思います。
ready()の外でも試しましたが、liは存在しません。そのため、非表示または表示が機能しません。

答えて

0

私はHTMLファイルから完全なメニューhtmlをカットして、必要なときにそれを表示するのにappend();を使うべきだと思います。それは例えばjavascriptの負荷まで表示されません。この方法:それはHTMLに依存し、それを置く場所に依存しない

$.ajax({ 

    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Query.asmx/GetUserPermissions", 
    data: "{}", 
    dataType: "json", 
    success: function (Result) { 
    Perms = Result.d; 
    var pageName = location.pathname.substring(1).toLowerCase(); 
    if (Perms.indexOf('4') != -1) { 
     $("#mydiv").append('<menu>menu items html</menu>'); 
    } 
    else { 
     if (pageName == 'webform2') { 
     window.location = 'default.aspx' 
     } 
    } 
    }, 
    error: function (Result) { 
    alert(Result.d); 
    } 
}); 
+0

どこスクリプト –

+0

を置くためには、JavaScriptの実行まで空になります。 –

+0

だからどこにでも置くことができます。 –

関連する問題