3

私は PHP サイトを作成していますが、次の問題に遭遇しました。ページ上のハイパーリンクをクリックし、小さなデータ項目を php スクリプトに送信し、スクリプトにその機能を実行させ、結果を返すようにしたいと考えています。

このサイトで AJAX を使用して、各ページをサイトの div セクションにロードし、すべてのページ、データ、および応答をこの中央の div にロードします。

<html>
    <body>
        <div id="topMenuBar">
            <div id="contents">
            //ALL DATA IS LOADED HERE...//
            </div>
        </div>
    </body>
</html>

そのため、トップ メニューからページを選択すると、次のコードを実行するだけです。

$('#topMenuBar a').click(function(e)
{
    e.preventDefault();
    $('#contents').load($(this).attr('href'), function()
    {
    });
});

ページがコンテンツ セクションに読み込まれるようになったので、「results.php」というページを読み込みます。このページは、DB に接続してクエリを実行し、結果を含む HTML テーブルを作成します。テーブルの各行には小さなハイパーリンクがあり、クリックすると値が別の PHP スクリプトに送信され、内容の div がクリアされ、このスクリプト (getInfo.php) からの応答で div が再設定されます。たとえば、行には次の PHP コードがリンクを生成します。

<label class="moreInfo"><a name="test01" onClick="getInfoFromPHP(<?php echo $data[$id]; ?> )">Get Info</a></label>

そのため、テーブルが PHP it によって生成されると、クリックされたリンクは JS 関数に値を渡します。

私が今する必要があるのは、値を PHP スクリプトに送信して、DB を再度クエリし、結果を「コンテンツ」div に挿入することです。私は次の機能を試しています。

function getInfoFromPHP(myVar){
    var netID = myVar;
    $.ajax({
        url: "getInfo.php",
        type: "POST",     
        data: { 
            networkID: netID
        }, 
        success: function(html) {
            $('#contents').empty();
            $('#contents').load(html);
        }      
    });
};

関数を呼び出すと、データがスクリプトに送信されるように見えますが、firebug から次のエラーが発生します。

POST http://127.0.0.1/private/networks/includes/leave_a_network.php - 200 OK -15ms
GET http://127.0.0.1/%3Ch2%3EHello 403 禁止 21ms "NetworkError: 403 禁止 - http://127.0 .0.1/%3Ch2%3EHello " こんにちは

PHP スクリプトは次のことだけを行っています。

<?php
    session_start();
    $networkID = $_POST['networkID'];
    echo "<h2>Hello World</h2>";
?>

データをPHPスクリプトに送信してdivにロードする最良の方法は何ですか?

フィードバックをお寄せいただきありがとうございます。

4

3 に答える 3

9

success 関数に $('#contents').html(html); を入れます。ロードの代わりに。

于 2012-04-30T17:37:45.200 に答える
4
success: function(html) {

ここで試すように、再度「ロード」する必要のない文字列としてhtmlを返しています-

$('#contents').load(html);

その行をこれに変更します

$('#contents').html(html);
于 2012-04-30T17:38:09.040 に答える
-1

より良い方法は、 $.ajax を使用してリクエストを送信することです。成功のコールバックで、結果を分析し、必要なことを行うことができます:

http://api.jquery.com/jQuery.ajax/

于 2012-04-30T17:35:11.973 に答える