0

私の個人的なプロジェクトでは、ポイント システムを作ろうとしています。基本的に私がやりたいことは: ボタン (Jquery) をクリックし、クエリをデータベースに送信し、最後に自動的に更新されるポイントをユーザーに表示します。私はajaxを使用できると考えました。

$(this).html('Thank you for granting EXP!');
var dataString = 'username=' + username+ '&name='+ name + '&count=' + count + '&message_id=' + message_id;

    $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: dataString,
    success: function() {
        $('#skills').load('./modules/skill_table.php');
    }
    });

この Ajax リクエストは、正しいページをリクエストします。そのページには MySQLi Query があり、これも正常に実行されます。問題は、クエリを実行した後にポイントを表示する正しい div をリロードしたいことです。div をリロードすると、変更が表示されません。私ができることについて何か提案はありますか?このような ajax 呼び出しは初めてです。(データ) 応答で何かを行うことができますが、それは、この要求のためだけに別の php ファイルを作成する必要があるということですか?

編集:上記のコードは機能します。MySQL クエリを実行し、データベースを更新します。積み荷(); 関数も動作します! .load('someotherfile.php'); を試したとき 他のファイルを表示します。問題は、現在のモジュール (skill_table.php) をリロードしようとすると、更新された値ではなく古い値が表示されることです。この説明が少しでも良くなれば幸いです。

skill_table.php モジュールを新しいデータベース値でリロードしますが、古い値が表示されます。

4

4 に答える 4

1

効果的な POST 要求を作成し、AJAX で応答をキャプチャして、それを 1 回で返す方法のより完全な例を次に示します。これは多くの方法の 1 つに過ぎず、例が曖昧であることを理解しておいてください。そこから学び、ニーズに合わせて形にしてください。

AJAX リクエスト

$.post(
    // This is the URL your posting to
    'index.php?page=profile', 
    // This is the JSONified version of your post data
    {
        "username":username,
        "name":name,
        "count":count,
        "message_id":message_id
    }, 
    // Handling your response here
    function(returnString) {
        // Check to ensure your php code worked
        if(returnString.success === 1) {
            // Insert your new DOM
            $('#skills').html(returnString.response);
        } else {
            // Send error message here
            window.alert('Oh noes! The world is ending!');
            // alertnatively
            //window.alert('Error:' + returnString.response);
        }
    }
);

架空の PHP ファイル

header("Content-type: application/json");

$mysqli->doMyAwesomeMySQLQueryHere();
$success = ($DidMyQueryWork) ? true : false;

echo json_encode(
        array(
            'success' => $success, 
            'response' => 'Your DOM Here'
        )
);
于 2013-01-14T15:57:52.837 に答える
1

.load はキャッシュからプルしています。これが GET リクエストの場合は、キャッシュを使用しないように指示するだけで済みますが、POST を実行しているため、読み込まれた URL の末尾に任意のランダム要素を追加する必要があります。これを試して:

 $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: dataString,
    success: function() {
        $('#skills').load('./modules/skill_table.php?_=' + (new Date()).getTime();
    }
    });

また、jQuery を使用しているため、.serialize() をチェックして、配列から dataStrings を構築するのに役立ててください。

http://api.jquery.com/serialize/

于 2013-12-17T09:37:14.540 に答える
0

ajax 応答内でテーブルまたは html を送信することをお勧めします (1 つの要求のみが送信されます)。

$.ajax({
  type: "POST",
  url: "index.php?page=profile",
  data: dataString,
  async:false,
  success: function(data) {
      $('#skills').html(data);
  }
}); 

index.php:

include('./modules/skill_table.php');
于 2013-01-14T16:23:30.800 に答える
0

データ パラメータを正しく作成する必要があります。IE、jQueryに構築させます:

$(this).html('Thank you for granting EXP!');    
    $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: {'username' : username, 'name' : name, 'count' : count, 'message_id' = message_id },
    success: function() {
        $('#skills').load('./modules/skill_table.php');
    }
});
于 2013-01-14T16:16:25.503 に答える