この質問は、すでに回答されている質問とは少し異なります...
私がしようとしているのは、フォーム送信時に MySQL クエリを実行するautoHide()PHP ファイル を呼び出す関数 を実行することですartistdo.php。フォーム送信時に true が返された場合 (クエリが成功した場合)、フォームは送信されません。
私が得ているのは、MySQL クエリが実行されていないことです。クエリを削除して return true をartistdo.phpページに配置しても、ajax の return false はフォームの送信を停止しませんが、alert("Success");が呼び出されます。ただし、autoHide()関数内で return false を 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;
}
そのため、MySQL クエリ全体をページから完全に削除し、artistdo.php何も置き換えないと、フォームは引き続き送信されます。これは、ページが確実に true を返し、が呼び出されているreturn true;ため、AJAX に問題があると思わせます。AJAX 呼び出しの外に移動すると、フォームが正しく送信されません。artistdo.phpalert("Success");return true
これが理にかなっていることを願っています...
助けてくれてありがとう!