Php XMLHttpRequest在FireFox中工作,而不是Safari
我的Mac电脑上有一个帐户数据库,在我点击删除按钮后,它使用HTML、Javascript和PHP删除一个帐户。它在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页面来删除
onclick
在表单中调用一个js funcverifyDelete()
请求我验证我的删除选择onsubmit
调用js funcdelAccount()
delAccount()
使用XMLHttpRequest
调用php页面来删除
帐目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
afterxmlDelete.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);