2

私はajaxに問題があり、エンジンを書き直しています。この load more スクリプトを使用するサイトを作成しました。

http://www.9lessons.info/2009/12/twitter-style-load-more-results-with.html

URLがexample.com/user.php?u=ExampleUserのようになっている場合、ユーザーのプロフィールページ(ユーザーのフィードバックから投稿を取得しています)ですべて正常に機能します が、.htaccessにこれがあります:

RewriteRule ^u/(.*) user.php?u=$1 [L]

したがって、 example.com /u/ExampleUser のように入力すると、次のようなユーザー名が取得されます。

$username = $_GET['u'];

しかし、このように load more をクリックすると、ユーザーからの投稿は読み込まれず、サイト自体が div ボックスに移動し始めます (iframe のように...)。助けてください、必要です。これがMySQLデータベースからより多くの情報をロードするスクリプトです($idはDBからのユーザーIDです):

$(function() {
    // More Button
    $('.more').live("click",function() {
        var ID = $(this).attr("id");
        if (ID) {
            $("#more" + ID).html('<img src="moreajax.gif" />');

            $.ajax({
                type: "POST",
                url: "ajax_more.php",
                data: 'lastmsg='+ID+'&user='+<? echo $id; ?>,
                cache: false,
                success: function(html) {
                    $("#container").append(html);
                    $("#more"+ID).remove();
                }
            });
        } else {
            $(".morebox").html('The End');
        }
        return false;
    });
});
4

1 に答える 1

1

コードのコンテキスト全体がわからないため、ajax 呼び出しが行われたときのように見えますが、最終的な URL はdomain.tld/u/ajax_more.php.

javascript オブジェクトで定数のリストを維持することで、この問題を回避します。

たとえば、paths.phpこれを含むファイルがあります。

<?php
    header("Content-Type: text/javascript");
    echo "
        myNamespace.paths = {
            RELATIVE_FOLDER: '<?=RELATIVE_FOLDER?>',
            // add more as required...
        }
    ";
?>

これは、通常のスクリプト (scriptタグ付き) と同じようにページに含まれ、その時点からmyNamespace.paths、サーバーから返される定数が含まれます。

私の場合、URL が「http://www.example.org/path/to/my/dev/env」の場合、サーバー側で にRELATIVE_FOLDER設定し、これをパス オブジェクトに含めます。 /path/to/my/dev/env/.

後で、ajax 呼び出しで:

$.ajax({
    type: "POST",
    url: myNamespace.paths.RELATIVE_FOLDER + "ajax_more.php",
    // ... everything else
});

PHP をスクリプトに直接挿入しても問題はないと思います。これは必ずしも悪いことではありませんが、js を縮小するのが難しくなります。<?= ... ?>これが、タグを使用して javascript 自体に定数を直接挿入するのではなく、定数を格納するために別のファイルを使用した理由です。

于 2012-11-19T14:05:12.460 に答える