2017-08-27 12 views
0

私の問題は、私が呼びたいphp関数と同じphpファイルのAjaxが動作しないことです。ボタンを押すとページがリロードされず、関数が呼び出されるようにしたいと思います。それが意味をなさないならば、私は下にajaxと私のタグをputtedし、ページの上部にPHP関数を置いた。ここに私のコードだ:同じpagでphp関数を呼び出すAjax関数が機能しない

アヤックス:私は呼びたい

<script> 
      function getData() { 
       $.ajax({ 
        type: "GET", 
        url: "view.php", 
        data: {action: 'PakeistiCashreg'}, 
        success: function(data){ 
         alert('Kasos aparatas sėkmingai pakeistas'); 
        } 
        }); 
       } 
      </script> 

PHP関数:

if(isset($_GET["action"])) { 
    if($_GET["action"] == "PakeistiCashreg") { 
     mysql_query("UPDATE ".$table['invoices']." SET `CashReg` = '".$_POST['CashRegInput']."' WHERE `id` = '156' LIMIT 1"); 
    } 
} 

とアクションが起こるボタン:

<form method="post"><?php echo CASHREG; ?>:<select name="CashRegInput" id="CashRegInput" class="Input3"><option></option> 
        <?php 
        foreach($CashReg as $key => $value) { 
         echo '<option value="'.$value.'">'.$value.'</option>'; 
        } 
        ?> 
       </select><button name="PakeistiCashreg" onclick="getData();" id="PakeistiCashreg">Pakeisti kasos aparatą</button></form> 
+0

jquery ajax関数を使用しているとしてあなたのページにjqueryが含まれていますか?また、ブラウザのコンソールで何がエラーになっているかなど、いくつかの詳細をprooooovideしてください。 –

+0

また、何が起こっているか教えてください。それはページを再読み込みしているようですか?その場合は、私が思うgetData()呼び出しでサブミットを取り消したいと思います。 – 82Tuskers

+0

@amit wadhwaniどういう意味がありますか? 404エラーコードがあります。 "XHR Faile loading:Get htttp:// ........" – TheLietuvis

答えて

0

これを試してみてください。 マークアップを:

<form name="some-form" method="post" onsubmit="getData(event);"> 
    <?php echo CASHREG; ?>: 
    <select name="CashRegInput" id="CashRegInput" class="Input3"> 
     <option></option> 
     <?php 
      foreach($CashReg as $key => $value) { 
       echo '<option value="'.$value.'">'.$value.'</option>'; 
      } 
     ?> 
    </select> 
    <button type="submit" name="PakeistiCashreg" id="PakeistiCashreg">Pakeisti kasos aparatą</button> 
</form> 

スクリプト:

function getData(e) { 
    e.preventDefault(); 
    var cashRegInput = $('#CashRegInput').val(); 
    if (cashRegInput) { 
     $.ajax({ 
      type: "POST", 
      url: "view.php", 
      data: { action: 'PakeistiCashreg', CashRegInput: cashRegInput }, 
      success: function(data) { 
       alert('Kasos aparatas sėkmingai pakeistas'); 
      } 
     }); 
    } 
} 

はそれがあなたのために働くなら、私に教えてください。

+0

Hmmm。動作しません。 Uncaught TypeError:未定義のプロパティ 'preventDefault'を読み取ることができません getData(?mod = invoices&action = view&id = 157:200) HTMLFormElement.onsubmit(?mod = invoices&action = view&id = 157:110) – TheLietuvis

+0

回答。再度確認して助言してください。ありがとう。また、通常は、ハンドラーをhtmlでロードしません。しかし、私はあなたのコードごとにそれらを使用しています。 – 82Tuskers

+0

今私は500内部サーバーのエラーを取得、私は問題がどこか他のだと思う – TheLietuvis

0

確かに分かりませんが、最初にロードされたページとajax呼び出しのハンドラの両方を含むファイルview.phpがあるとお考えです。それがあなたが言っていることでないなら、この答えを無視してください。

ajaxリクエストを行うことは、ページを読み込むことと同じではありません。クライアントがajaxレスポンスを受け取ると、それはすべて適切なハンドラを呼び出します。この場合、それはすべてalert('Kasos aparatas sėkmingai pakeistas');です。ページが最初にロードされたときにハンドラを実行しようとしていますが、これを防ぐべきである$_GET("action")のチェックを追加した点が異なります。 ajax呼び出しのために別個のURLと別のハンドラが必要です。たとえば、ajaxの呼び出しURLをaction.phpに変更し、データベース呼び出しのスニペットをaction.phpという別のファイルに移動します。

(実際、PHPは実際にはajax呼び出しではなく、HTMLを返すようになっているため、他の言語/フレームワークのハンドラで置き換える方がよいでしょう。どのようにこれを行うにアドバイスするためにあなたの設定について十分に知っている。)

関連する問題