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

标签 php javascript html xmlhttprequest

我的 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/

相关文章:

phpmyadmin 设置 session cookie 失败。也许您正在使用 HTTP 而不是 HTTPS

phpDocumentor ubuntu 安装

javascript - 将点击功能添加到动态生成的div jquery

javascript - 使用 React 获取数组中的下一个项目

javascript - 用小数计算 Jquery

javascript - 如何使用 HTML 中的数据属性用数据库中的链接填充链接和图像源?

php -/web/bundles 下的 Assets 在 Symfony2 生产中找不到

php - 在php中的字符串数组中查找字符串的开头

javascript - PHP 中的 setcookie 仅适用于本地主机

html - 背景颜色不显示?