簡體   English   中英

Ajax函數在同一個分頁中調用php函數不起作用

[英]Ajax function to call php function in same pag doesn't work

我的問題是與我要調用的php函數相同的php文件中的Ajax無法正常工作。 我想確保當我按下按鈕時頁面不會重新加載,並且該函數將被調用。 如果可以的話,我在頁面的底部放置了ajax標簽,在頁面頂部放置了php函數。 這是我的代碼:

阿賈克斯:

<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>

試試這個:標記:

<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');
            }
        });
    }
}

請讓我知道這對你有沒有用。

我不確定,但是我想您是說您有一個文件view.php ,其中包含最初加載的頁面和ajax調用的處理程序。 如果這不是您要說的,請忽略此答案。

進行ajax請求與加載頁面不同。 當客戶端收到ajax響應時,它所做的只是調用適當的處理程序。 在這種情況下,它所要做的只是alert('Kasos aparatas sėkmingai pakeistas'); 它試圖在首次加載頁面時運行處理程序,只是您已在$_GET("action")上添加了一個檢查以防止這種情況發生。 對於ajax調用,您需要一個單獨的URL和一個單獨的處理程序。 例如,您可以將ajax調用URL更改為action.php ,然后將包含數據庫調用的代碼段移動到名為action.php的單獨文件中。

(實際上,PHP實際上僅用於返回HTML,而不用於ajax調用。因此,用其他某種語言/框架的處理程序替換action.php會更好。但是PHP可以工作,在任何情況下我都不會足夠了解您的設置,以提供有關如何執行此操作的建議。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM