gpt4 book ai didi

php - 无法使用 onSubmit 属性触发的 Ajax 响应阻止表单提交。

转载 作者:行者123 更新时间:2023-11-29 02:33:47 27 4
gpt4 key购买 nike

这个问题与已经回答的问题有点不同......

我想要做的是运行一个函数,autoHide(),调用一个 PHP 文件,artistdo.php,执行一个 MySQL 查询,在表单提交,如果返回true(查询成功),则表单不提交。

我得到的是 MySQL 查询没有运行,即使我删除了查询并将 return true 放在 artistdo.php 页面中,ajax 中的 return false 也没有t 停止表单提交,但它确实会导致 alert("Success"); 被调用,但是,如果我将 return false 放在 autoHide() 函数内但在外部AJAX,表单不会正确提交。这是我到目前为止所拥有的:

表单页面:

<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 页面肯定返回 true 并且正在调用 alert("Success");。如果我将 return true 移动到 AJAX 调用之外,表单将不会正确提交。

我希望这是有道理的...

感谢您的帮助!

最佳答案

您可以使用 .data()将元数据与表单相关联的方法,让您知道是否应该提交它:

<head>
<script type="text/javascript">
$(function() {
$('#myform').submit(function() {
if ($(this).data('shouldSubmit')) {
return true;
}

$.ajax({
url: '/artistdo.php',
type: 'GET',
dataType: 'json',
context: this,
data: { cmd: 'autoHideProduct' },
success: function (result) {
if (result) {
$(this)
.data('shouldSubmit', true)
.submit();
}
}
});

return false;
});
});
</script>
</head>

<body>
<form action="http://off-site/form.php" method="post" id="myform">
<!-- Form fields -->
<input type="submit" value="submit" onMouseOver="this.style.cursor='pointer'">
</form>
</body>

关于php - 无法使用 onSubmit 属性触发的 Ajax 响应阻止表单提交。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com