XMLHttpRequest适用于FireFox,而非Safari

时间:2012-07-01 01:01:39

标签: php javascript html xmlhttprequest

我的Mac上有一个帐户数据库,它使用HTML,Javascript&单击删除按钮后,PHP删除一个帐户。它每次都在FireFox中工作,并且每次都在Safari中失败(失败意味着删除请求被完全忽略)。

基本上,这就是我的代码所做的......

  1. 表单内的按钮onclick调用js func verifyDelete(),要求我验证我的删除选择
  2. 接下来,来自同一表单的onsubmit会调用js func delAccount()
  3. 最后,delAccount()使用XMLHttpRequest调用php页面删除 帐户
  4. 我想到了使用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
    ?>
    

2 个答案:

答案 0 :(得分:1)

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

修改delAccount()

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

并将其添加到delAccount()

的末尾
return false;

......什么会避免发送表格

还有什么:使用GET时,send-method需要null作为参数

答案 1 :(得分:-1)

我忽略了一些事情。我只需要将truefalse交换为XMLHttpRequest ...

xmlDelete.open("GET", "delAcct.php?q=" + acctNum, false);

我知道它使事件同步,但我不知道为什么这项工作和另一项没有。