我有以下 javascript 代码:
var value = $.ajax({
type: "POST",
url: "receive.php",
data: $('#something').serialize(),
cache: false,
async: true
}).success(function(){
}).error(function() {
alert("not sent");
});
和 PHP
if(isset($_POST['the_thingy'])){
$allowed = 100;
$the_thingy = $mysqli->real_escape_string($_POST['the_thingy']);
$query = "SELECT another thingy from the database";
$the_thingy_length = strlen($the_thingy);
if($the_thingy_length <= $allowed){
$query = "INSERT INTO thingyes VALUES '$the_thingy'";
$result = $mysqli->query($query);
}
//amongst other queries and of the same "type"
基本上发生的事情是插入确实完成但由于某种原因它在数据库中显示为加倍(2x一次查询完成)。 ajax检索警报(“未发送”); 并刷新页面(不应该这样)。可能是什么导致了这个?其他查询,代码语法,某些功能?我使用的所有其他ajax工作得很好。由于特定的东西,这是一个已知的问题吗?非常感谢你提前!
答案 0 :(得分:1)
对于双提交和页面刷新,听起来您需要阻止表单的默认操作:
$("form").on('submit', function(event) {
// prevent the default submit
event.preventDefault();
// do your other stuff
// your ajax call
var value = $.ajax({
...
});
});
如果条目被正确添加但你得到的错误函数相同,那么你的php中可能会出现一个错误导致脚本退出并出现错误(插入部分之后的某个地方)。
您应启用错误处理并显示以在浏览器工具的网络选项卡中查看它(或暂时禁用ajax以正常提交并在浏览器中查看错误)或检查Web服务器错误日志中的消息。 / p>