gpt4 book ai didi

php - XMLHttpRequest 适用于 FireFox,不适用于 Safari

转载 作者:行者123 更新时间:2023-11-28 09:49:24 27 4
gpt4 key购买 nike

我的 Mac 上有一个帐户数据库,在单击删除按钮后,该数据库使用 HTML、Javascript 和 PHP 来删除帐户。每次在 FireFox 中都有效,而在 Safari 中每次都会失败(失败意味着删除请求被完全忽略)。

本质上,这就是我的代码正在做的事情......

  1. 表单内的按钮onclick调用js函数verifyDelete()要求我验证我的删除选择
  2. 接下来,同一表单中的 onsubmit 调用 js 函数 delAccount()
  3. 最后,delAccount()使用XMLHttpRequest调用php页面来删除帐户

我通过查看 AJAX 得到了使用 XMLHttpRequest 的想法。我不需要 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
?>

文件 - 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;
}

文件 - delAcct.php

<?php
// code to delete account
?>

最佳答案

您没有取消表单的发送,因此可能会在发送 AJAX 请求之前提交表单(这将卸载当前页面)。

修改delAccount()的调用:

<form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">

并将其添加到 delAccount() 的末尾

return false;

...什么可以避免发送表单

还有什么:使用 GET 时,发送方法需要 null 作为参数

关于php - XMLHttpRequest 适用于 FireFox,不适用于 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com