我的Mac上有一个帐户数据库,它使用HTML,Javascript&单击删除按钮后,PHP删除一个帐户。它每次都在FireFox中工作,并且每次都在Safari中失败(失败意味着删除请求被完全忽略)。
基本上,这就是我的代码所做的......
onclick
调用js func verifyDelete()
,要求我验证我的删除选择onsubmit
会调用js func delAccount()
delAccount()
使用XMLHttpRequest
调用php页面删除
帐户我想到了使用XMLHttpRequest
查看AJAX。我不需要AJAX使用的所有ReadyState,Response等,所以我只是使用了我需要的东西。在delAccount()
函数中执行我所做的事情是“合法的”吗?也许这就是Safari失败的原因?
感谢任何帮助,这是我的代码......
文件 - View.php
<?php
// some code
?>
<form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">
<input type="hidden" name="acctName" value="Blah” />
<button onclick="return verifyDelete()" >Delete</button>
</form>
<?php
// some code
?>
FILE - common.js
function verifyDelete() {
var r=confirm("Are you sure you want to Delete this?\r\n\n" +
"A) 'Cancel' delete request\r\n" +
"B) 'OK', delete\r\n");
if (r == false) {
return false;
}
else {
return true;
}
}
function delAccount (acctNum) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlDelete = new XMLHttpRequest();
}
xmlDelete.open("GET", "delAcct.php?q=" + acctNum, true);
xmlDelete.send(null);
return false;
}
FILE - delAcct.php
<?php
// code to delete account
?>
答案 0 :(得分:1)
您没有取消发送表单,因此可能会在发出AJAX请求之前提交表单get(将卸载当前页面)。
修改delAccount()
:
<form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">
并将其添加到delAccount()
return false;
......什么会避免发送表格
还有什么:使用GET时,send-method需要null
作为参数
答案 1 :(得分:-1)
true
与false
交换为XMLHttpRequest
...
xmlDelete.open("GET", "delAcct.php?q=" + acctNum, false);
我知道它使事件同步,但我不知道为什么这项工作和另一项没有。