我一直在解决这个问题一段时间,并看到了很多不同的方法。我有我认为应该可以工作的代码,但由于某种原因不能。
这是我的 JavaScript 代码文件名 - test.js:
function deleteTempTable() {
$.ajax({
url: "exit.php",
success: function(data) {
alert("Deleting Temp Table");
}
});
}
我放置警报纯粹是为了测试目的,以确保正在进行 AJAX 调用,并且确实如此。
这是使 AJAX 调用文件名 - form.template 的按钮的 HTML:
<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 没有语法错误,从我所见是发布的解决方案。
更新
多亏了一些建议,我才能得到一个可以确认 php 代码本身工作的测试,但实际上并没有被 AJAX 调用执行。本质上,我只是运行了创建表的页面,即 index.php,然后将浏览器定向到 exit.php,并且该表已按我的预期被删除。所以唯一的结论是 exit.php 实际上并没有被 AJAX 调用调用/执行。
我不知道这是否是问题,但这是我的实际 url 分配(或多或少):url: "/folder1/folder2/folder3/folder4/exit.php"
我也尝试url: "exit.php"
过,所以我不知道是否需要文件的完整根路径,或者如果这是一些问题。在这一点上,我只是在头脑风暴,因为我至少现在知道 php 没有被执行或正确打开。
更新
好吧,感谢 Salivador 带我解决了一些问题,问题就解决了。基本上代码是正确的。因此,如果您需要做这样的事情,请随意使用它,但是不要做我所做的并弄乱文件路径!
掌心