2017-08-14 11 views
2

条件を満たしているかどうかを確認し、条件が満たされている場合は、MySQLクエリを実行するPHPファイルへのAjax呼び出しを行っています。Ajaxコール後のPHP変数の更新

クエリは、新しい値で自分のDB内のテーブルを更新します。これはすべて素晴らしいです。手動でリロードせずに、現在のページに新しい値を表示する方法を知りたいです。コードは以下の通りです。

私が更新してい変数が$ trialExpiry

HTML/PHP

<h4 class="sbText mt-10">Trial End Date: <?php echo date("d/m/Y", 
         strtotime($trialExpiry)); ?></h4> 

<form id='promocode'> 
    <input type='text' class='sbInput' placeholder='Promo Code' name='promocode'> 
    <input type='hidden' name='userid' value='<?php echo $userID; ?>'> 
    <button class='btn sbSubmit'>Submit</button> 
</form> 

であるjQueryの

<script> 
     $(function() { 
      $('#promocode').on('submit', function (e) { 
        e.preventDefault(); 
        $.ajax({ 
        type: 'post', 
        url: '../model/process-promo-code.php', 
        data: $('#promocode').serialize(), 
        success: function() { 
          $("button.btn").css({ 
          'transition-duration': '1000ms', 
           'opacity': '0.5' 
          }); 
        } 
       }); 
      }); 
     }); 
    </script> 

本当にありがとうございました。

+0

あなたのページにどのような「新しい価値」を見せたいですか?あなたの質問にそれを含めてください:それは不明です。 – Terry

答えて

2

以下のようにIE

<script> 
     $(function() { 
      $('#promocode').on('submit', function (e) { 
        e.preventDefault(); 
        $.ajax({ 
        type: 'post', 
        url: '../model/process-promo-code.php', 
        data: $('#promocode').serialize(), 
        success: function (data) { //<---- CALLBACK 


          alert(data); // data contains the return from the ajax call 

          $("button.btn").css({ 
          'transition-duration': '1000ms', 
           'opacity': '0.5' 
          }); 
        } 
       }); 
      }); 
     }); 
    </script> 
+0

これは多くの助けになりました!ありがとうございました!私は一つのことで苦労しています、 "結果"は基本的に全HTMLです。私が必要とする変数を返すにはどうすればよいですか?再びおねがいします。 –

+0

申し訳ありませんが、私はこれを自分で考え出しました。私はばかげていた。おかげさまで、あなたの答えは "答え"です。他の人にも感謝してくれました。 –

+1

@ Lyrical.me結果は、PHPスクリプトがエコーしたものです。私はあなたの仕組みが分からないが、私はそれが有効期限を返すと仮定していた。あなたのスクリプトがそれをしないならば、それを行う新しいPHPスクリプトを作成し、その新しいスクリプトでAJAX関数を実行し、その後、古いものを呼び出すだけです。 – Plato

2

あなたはコールバックを追加する必要があります - それらのため、あなたは、PHPの変数でライブアップデートを行うにはしたくない

success: function (data) { //<---- CALLBACK 


          $('input["name='userid' "]').val(data); // data contains the return from the ajax call 

          $("button.btn").css({ 
          'transition-duration': '1000ms', 
           'opacity': '0.5' 
+0

ありがとう、これは私の道に私を助ける - 私は笑いたい。アラートは、ページ全体のHTMLを表示しています。 –

+0

あなたは@ zakに答える時間をとってくれてありがとう –

0

のみ成功機能を変更しますページがリロードされたときにのみリフレッシュされます。代わりに、AJAXを介して要素の値を更新したいとします。私が知る限り、有効期限を更新する必要があります。あなたがしなければ、私に知らせてください、そして、私はそれがするべきであるものにコードを変更することができます。ここで

は、この機能の「制御フロー」です:

  1. (エントリポイント)ユーザーは、「送信」をクリック、jQueryのイベントハンドラが起動
  2. jQueryのAJAX機能が呼び出され、PHPにプロモーションコードを送信していますスクリプト
  3. PHPスクリプトでは、データベースがプロモーションコードで更新されます。
  4. PHPスクリプトは新しい有効期限を返します(希望するd/m/Y形式になっていると仮定します)
  5. jQuery AJAX関数のコールバックはスクリプトからデータを受け取ります。
  6. コールバックの関数本体は、ページ上の "Expiry"要素をPHP呼び出しの値で更新します。

ここでは、HTML/JavaScriptのにそれを置く方法は次のとおりです。

<h4 class="sbText mt-10" id="expiry_label"> 
    Trial End Date: <?php echo date("d/m/Y", 
        strtotime($trialExpiry)); // The initial value can be displayed as normal. ?> 
</h4> 

<form id='promocode'> 
    <input type='text' class='sbInput' placeholder='Promo Code' name='promocode'> 
    <input type='hidden' name='userid' value='<?php echo $userID; ?>'> 
    <button class='btn sbSubmit'>Submit</button> 
</form> 

<script> 
    $(function() { 
     $('#promocode').on('submit', function (e) { 
       e.preventDefault(); 
       $.ajax({ 
       type: 'post', 
       url: '../model/process-promo-code.php', 
       data: $('#promocode').serialize(), 
       success: function (result) { 
         $("button.btn").css({ 
         'transition-duration': '1000ms', 
          'opacity': '0.5' 
         }); 
         document.getElementById("expiry_label").innerHTML = "Trial End Date: " + result; 
       } 
      }); 
     }); 
    }); 
</script> 

あなたが見ることができるように、私は、要素にの「成功」プロパティにパラメータを「id」属性を追加しましたAJAX呼び出し、および要素を更新するコード行。

私は助けました!

+0

ここでコードはZakの答えに依存しますが、私はそれを変えてvalの関数を追加して名前に応じて入力フィールドの値を変更します – Osama

関連する問題