2017-08-27 56 views
0

我的問題是,我想調用的php函數在同一個php文件中的Ajax不起作用。我想要做到這一點,當我按下按鈕時,頁面將不會重新加載,函數將被調用。如果有意義的話,我在頁面的頂部放置了帶有ajax標籤和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嗎?另外請prooooover一些更多的細節,如你在瀏覽器控制檯中得到什麼錯誤。 –

+0

另外,您可能想告訴我們發生了什麼事。就像它重新加載頁面?在這種情況下,您想要取消getData()調用中的提交。 – 82Tuskers

+0

@amit wadhwani你的意思是什麼?我有404錯誤代碼。 「XHR Faile加載:獲取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

嗯。不起作用。我現在得到這個錯誤Uncaught TypeError:在HTMLFormElement.onsubmit(?mod = invoices&action = view&id = 157:110)無法讀取屬性undefined 的getData(?mod = invoices&action = view&id = 157:200) – TheLietuvis

+0

已更新回答。請再次檢查並提出建議。謝謝。另外,通常我們不會在html中加載處理程序。但是,我已根據您的代碼使用過它們。 – 82Tuskers

+0

現在我得到500內部服務器錯誤,我認爲問題在別處 – TheLietuvis

0

我不確定,但我想你說你有一個文件view.php,它包含最初加載的頁面和ajax調用的處理程序。如果這不是你說的話,那就忽略這個答案。

做ajax請求與加載頁面不一樣。當客戶端收到ajax響應時,它所做的只是調用適當的處理程序。在這種情況下,它所要做的就是alert('Kasos aparatas sėkmingai pakeistas');。它試圖在第一次加載頁面時運行處理程序,除了你已經添加了一個檢查$_GET("action")這應該防止這種情況。您需要一個單獨的URL和ajax調用的單獨處理程序。例如,您可以將ajax調用URL更改爲action.php,然後將帶有數據庫調用的片段移動到名爲action.php的單獨文件中。 (實際上,PHP實際上只用於返回HTML,而不是用於Ajax調用,所以最好用其他語言/框架中的action.php替換爲一個處理程序,但是PHP將起作用,並且無論如何我都不會對你的設置知之甚少,建議如何做到這一點。)