我一直在研究這個問題一段時間,並且看到了很多不同的方法。我有我認爲應該工作的代碼,但出於某種原因不是。關於jQuery的PHP函數AJAX
這裏是我的JavaScript代碼文件名 - test.js:
function deleteTempTable() {
$.ajax({
url: "exit.php",
success: function(data) {
alert("Deleting Temp Table");
}
});
}
我放在純粹的戒備用於測試目的以確保AJAX調用出現了,它是。
這裏是使AJAX調用文件名的按鈕,HTML - form.template:
<input type="button" title="Click to close window" value="Close"
onclick="deleteTempTable();" style="width:80px" name="close">
這並不工作,因爲我得到了JavaScript警告就好了。
這裏是我使用的PHP代碼的示例(它不是精確的,因爲它有一些我不能共享的東西,自定義類等等,無論哪種方式我都重複使用了相同的模式,而且它工作正常並丟棄表根據需要)文件名 - exit.php:
<?php
session_start();
require $_SERVER['DOCUMENT_ROOT'] . "path/to/file.php";
$tempTableName = $_SESSION['tempTableName'];
//Not really hard coding this it's just an example
$odbcConn = odbc_connect('DataBaseName', 'UserName', 'Password');
$sqlCmd = "DROP TABLE IF EXISTS $tempTableName;";
odbc_exec($odbcConn, $sqlCmd);
?>
當我點擊JavaScript警告彈出按鈕,但它顯示爲php的被忽略,因爲該表仍然存在。在我的代碼中的其他地方,當請求新的數據集時,使用相同的php模式來刪除表,並且它們會很好地放下。只是當我試圖用這個按鈕來做。
任何想法或指針都會很棒!
另外我看到這個問題,"Calling PHP function using JQuery .ajax()",但他的問題是語法,我非常確定我的IDE我沒有語法錯誤,從我看到這是解決方案發布。
UPDATE
多虧了一些建議,我能得到一個測試,將確認PHP代碼本身的工作,但實際上不是由AJAX調用執行。本質上,我只是運行創建表的頁面,即index.php,然後將瀏覽器導向到exit.php,並按照我的預期刪除表。所以唯一的結論是exit.php實際上並沒有被AJAX調用所調用/執行。
我不知道這可能是問題,但這裏是我的實際網址分配(或多或少):我曾試圖url: "exit.php"
以及url: "/folder1/folder2/folder3/folder4/exit.php"
,所以我不知道我是否需要完整的根路徑該文件或不,或者如果這是一些如何的問題。在這一點上,我只是頭腦風暴,因爲我至少現在知道php沒有被正確執行或打開。
UPDATE
好感謝Salivador走我通過一些故障排除問題解決。基本上,代碼是正確的。所以,如果你需要做這樣的事情,請隨時使用它,但是不要做我所做的事情,並弄亂文件路徑!
臉手掌
我會開始在你的php文件('ini_set('display_errors',1);')中顯示所有錯誤,並在你的成功回調中執行'console.log(data);'。 – jeroen
謝謝,我現在就試試 – defaultNINJA