0

メニュー項目をクリックして#layoutsという div にある php ファイルをロードすると、大きな問題が発生します。クリックするたびに、下の図のようにリクエストが重複するためです。

リクエストの重複

私はこれを使用します:

ダッシュボード.php

<nav id="navigation">
    <ul>
    <li><a href="#">Catálogo de... >></a>
        <ul>
        <li><a href="#s1">Perfiles</a></li>
        <li><a href="#s2">Clientes</a></li>
        <li><a href="#s3">Usuarios</a></li>
        <li><a href="#s4">Marcas,Productos,SubProductos</a></li>
        </ul>
    <div class="clear"></div>
    </li>
    <li><a href="#s5">Captura de Póliza</a></li>
    <li><a href="#s6">Levantamiento de Servicio</a></li>
    </ul>
</nav>
<div id="layouts">
    <h1>Seleccione una opción del menú</h2>
</div>

functions.js

$('#navigation li a').click(function() {
    $('#loading').show();
    page = $(this).attr('href');
    if (page == "#s1") {$('#layouts').load("./catperfiles.php");}
        else if (page == "#s2") {$('#layouts').load("./catclientes.php");}
            else if (page == "#s3") {$('#layouts').load("./catusuarios.php");}
                else if (page == "#s4") {$('#layouts').load("./catorganizacion.php");}
                    else if (page == "#s5") {$('#layouts').load("./poliza.php");}
                        else if (page == "#s6") {$('#layouts').load("./servicio.php");}

/*$.ajax({
    type: "GET",
    url: "./"+layout+".php",
    success: function(html) {
        $('#layouts').html(html);
        $('#loading').hide();
   }
});*/

});

servicio.php

<?php include 'config.php' ?>
<h1>Levantamiento del servicio</h1>
<h3>Elija una opción:</h3>
<input id="clientexist" name="typeclient" value="ce" type="radio" />
<label for="clientexist">Cliente existente</label>

<input id="clientnew" name="typeclient" value="cn" type="radio"/>
<label for="clientnew">Cliente nuevo</label>

<div id="areaTypeClient"></div>

config.php

<meta charset="utf-8">
<link rel="stylesheet" href="css/style.css" type="text/css"/>
<script src="js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="js/functions.js" type="text/javascript"></script>

奇妙なことに、ヘッダーにこの行がないphpページでは

<?php include 'config.php' ?> 

これはリクエストの重複ではありません。

div 内の php ファイルを含むこのタイプのナビゲーションについてより良いアイデアがある場合は、共有してください。ありがとう

4

1 に答える 1

0

ajax呼び出しは、リクエストごとにjavascriptを出力するように見えます。これにより、毎回新しい追加のクリックハンドラーがアタッチされるため、クリックあたりのリクエスト数が指数関数的に増加します。おそらく、JavaScriptコードまたはファイルはconfig.phpファイルのどこかで参照されています。

解決策:すべてのajax呼び出しに同じjavascriptコードを含めないでください。または、これにより、1つのクリックハンドラーのみが処理されていることを確認します。

$('#navigation li a').unbind('click').click(function() {
    $('#loading').show();
    page = $(this).attr('href');
    if (page == "#s1") {$('#layouts').load("./catperfiles.php");}
        else if (page == "#s2") {$('#layouts').load("./catclientes.php");}
            else if (page == "#s3") {$('#layouts').load("./catusuarios.php");}
                else if (page == "#s4") {$('#layouts').load("./catorganizacion.php");}
                    else if (page == "#s5") {$('#layouts').load("./poliza.php");}
                        else if (page == "#s6") {$('#layouts').load("./servicio.php");}

});
于 2012-07-08T00:50:21.880 に答える