Php XMLHttpRequest在FireFox中工作,而不是Safari

Php XMLHttpRequest在FireFox中工作,而不是Safari,php,javascript,html,xmlhttprequest,Php,Javascript,Html,Xmlhttprequest,我的Mac电脑上有一个帐户数据库,在我点击删除按钮后,它使用HTML、Javascript和PHP删除一个帐户。它在FireFox中每次都有效,在Safari中每次都失败(失败意味着删除请求被完全忽略) 本质上,这就是我的代码所做的 按钮onclick在表单中调用一个js funcverifyDelete()请求我验证我的删除选择 接下来,来自同一表单的onsubmit调用js funcdelAccount() 最后,delAccount()使用XMLHttpRequest调用php页面来删除

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

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

  • 按钮
    onclick
    在表单中调用一个js func
    verifyDelete()
    请求我验证我的删除选择
  • 接下来,来自同一表单的
    onsubmit
    调用js func
    delAccount()
  • 最后,
    delAccount()
    使用
    XMLHttpRequest
    调用php页面来删除 帐目
  • 通过查看AJAX,我想到了使用
    XMLHttpRequest
    。我不需要AJAX使用的所有ReadyState、响应等,所以我只需要使用我需要的。我在
    delAccount()函数中所做的事情是否合法?也许这就是Safari失败的原因

    感谢您的帮助,这是我的代码

    FILE-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
    ?>
    
    文件-delAcct.php

    <?php
        // code to delete account
    ?>
    

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

    修改调用
    delAccount()

    …什么可以避免发送表单


    还有:当使用GET时,send方法需要
    null
    作为参数

    我忽略了一些东西。我只需要将
    true
    false
    交换为
    XMLHttpRequest

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

    我知道它可以使事件同步,但我真的不知道为什么这个可以,而另一个不行。

    为什么不使用jQuery之类的javascript库?这些库的构建考虑到了这些交叉浏览器的问题,并使您的javascript代码易于编写和管理。--顺便问一下,您在safari中看到任何javascript错误吗?尝试在delAccount方法中提醒acctNum,我被告知最好在学习jquery之前熟悉javascript。不是这样吗?我到处都在使用警报,没有发现任何不应该做的事情——包括遍历
    if
    语句,这样我知道php正在被调用。对于类似的事情,我建议使用某种javascript库,这将使你的生活变得轻松。告诉你要熟悉的人使用javascript是正确的。但是javascript作为一种语言,而不是交叉浏览器开发的噩梦,这对您毫无帮助。做一些算法来学习第一部分,当你开始使用DOM或AJAX时,使用JQuery
    after
    xmlDelete.send()
    并为send参数添加了null,但它仍然不起作用。不过,我认为您的思路是正确的,我刚刚告诉Kishore,我可以通过取消
    verifyDelete()
    函数将其设置为“delete”。但是,我需要“你确定吗?”警报,所以这不是修复,只是我让它删除了。可能是时间问题?您是否也在表单中更新了对delAccount的调用(返回非常重要)?此问题的修复在
    xmlDelete.open()
    请求中将true更改为false。我按照你的建议添加了这个问题的回复和我的代码,谢谢你的所有输入;我的代码现在更加准确和完整!
    <form method="get" onsubmit="return delAccount('<?php echo $acctNum; ?>')">
    
    return false;
    
    xmlDelete.open("GET", "delAcct.php?q=" + acctNum, false);