0

ユーザーがテーブルセルをクリックしたときにjQueryがプルする要素情報を、SQLクエリでその情報(この場合はID)を使用する新しいページに投稿しようとしています。つまり、ユーザーがセルをクリックすると、クリックしたジョブの ID は 25 になります。これは、その ID を使用してジョブのデータベースをクエリし、その情報をページに入力する PHP ページに渡されます。その後、ユーザーはクエリからの情報を変更し、それを送信してデータベース テーブルを更新できます。私はクリック機能からのIDを持っており、情報が投稿されたことを知らせる成功アラートが表示されます。問題は、ページを開くと、投稿された名前のインデックスが未定義であると表示されることです。情報を取得するためのスクリプトは次のとおりです。

        <script>
        $(document).ready(function()
        {
            $("table.jobs tbody td#job").click(function()
            {
                var $this = $(this);
                var col   = $this.text();
                var LeftCellText = $this.prev().text();
                if (col == '')
                alert("Please pick another column");
                else
                $.ajax(
                {
                    type:"POST",
                    url:"../php/jobUpdate.php",
                    data:"name=" + LeftCellText,
                    success: function()
                    {
                        window.location = "../php/jobUpdate.php";
                    }
                });
            });
        });
    </script>

送信先の単純なphpページは次のとおりです。

$name = $_POST['name'];
echo $name;

私は jQuery を初めて使用しますが、これが機能しない理由がわかりません。

4

4 に答える 4

1

ajax を使用すると、2 番目のページ../php/jobUpdate.phpが最初のページから送信されたデータを処理し、値 (または必要に応じて html の巨大な文字列) を返します。

最初のページは、ajax ルーチンのsuccess関数で新しいデータを受け取り、現在のページを更新できます。更新部分はsuccess:関数内で発生するため、正しい軌道に乗っています。

しかし、成功関数では、すでにそこにいてデータを処理した後、ユーザーを2番目のページにリダイレクトしています。それらをリダイレクトすることは、おそらくあなたがやりたいことではありません。

これを置き換えてみてください:

                success: function()
                {
                    window.location = "../php/jobUpdate.php";
                }

これとともに:

                success: function(data)
                {
                    alert(data);
                }

ajax 経由で受信したデータで最初のページを更新する方法を知りたい場合は、次のように空の DIV を html に追加してみてください。

<div id="somestuff"></div>

次に、success:ajax ルーチンの関数で、次のようにします。

$('#somestuff').html(data);

(「データ」という用語は任意の名前にすることができることに注意してください。関数のパラメーターで使用される名前と一致する必要があるだけです。例:

success: function(whatzup) {
    alert(whatzup);
}
于 2013-06-17T20:59:07.530 に答える
0

成功した関数でウィンドウをリロードすると、.ajax 経由で渡された変数が削除されます。

試すことができるのは、データを返し、それを既存のページで使用することです。

success: function(msg) {
     $('#someDiv').append(msg);
}
于 2013-06-17T21:06:09.950 に答える