【发布时间】:2012-01-19 20:36:11
【问题描述】:
这个问题与已经回答的问题有点不同......
我要做的是运行一个函数autoHide(),它调用一个PHP文件artistdo.php,在表单提交时执行一个MySQL查询,如果它返回true(查询成功),表单未提交。
我得到的是 MySQL 查询没有运行,即使我删除查询并将 return true 放在 artistdo.php 页面中,ajax 中的 return false 也不会停止表单提交,但它确实会导致调用alert("Success");,但是,如果我在autoHide() 函数内但在AJAX 之外放置return false,则表单不会正确提交。到目前为止,这是我所拥有的:
表单页面:
<head>
function autoHide() {
$.ajax({
'url': '/artistdo.php',
'type': 'GET',
'dataType': 'json',
'data': {
cmd: 'autoHideProduct'
},
'success': function () {
alert("Success");
return false;
}
});
}
</head>
<body>
<form action="http://off-site/form.php" method="post"
onSubmit="return autoHide()">
<input type="submit" value="submit"
onMouseOver="this.style.cursor='pointer'">
</form>
还有artistdo.php页面(为了方便阅读,这里是简化版):
if($get['cmd'] == 'autoHideProduct') {
$query = mysql_query("UPDATE products SET house='0'");
if ($query) {
return true;
} else {
return false;
}
所以,如果我从 artistdo.php 页面中完全删除整个 MySQL 查询并将其替换为除 return true; 之外的任何内容,表单仍会提交,这让我认为问题出在 AJAX 中,因为 artistdo.php page 肯定会返回 true,并且正在调用 alert("Success");。
如果我将 return true 移到 AJAX 调用之外,则表单不会正确提交。
我希望这是有道理的......
感谢您的帮助!
【问题讨论】:
标签: php mysql ajax forms onsubmit