我有以下代码:
var url = "save.php"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#frmSurvey").serialize(), // serializes the form's elements.
success: function(){
alert('success');
},
error: function(){
alert( "Request failed: " );
}
});
现在,这在向数据库提交数据时工作正常 - 但是,当我故意更改save.php
文件以便未提交数据时,我仍然会收到success
警报。
以下保存文件的代码:
$proc = mysqli_prepare($link, "UPDATE tresults SET ip = ?, browser = ?, q1 = ?, q2 = ?, q3 = ?, q4 = ?, q5 = ?, q6 = ?, q7 = ?, q8 = ?, q9 = ?, q10 = ?, q11 = ?, q12 = ?, q13 = ?, q14 = ?, q15 = ?, q16 = ?, q17 = ?, q18 = ?, q19 = ?, q20 = ?, q21 = ?, q22 = ?, q23 = ?, q24 = ?, q25 = ?, q26 = ?, q27 = ?, q28 = ?, q29 = ?, q30 = ?, q31 = ?, q32 = ?, q33 = ?, q34 = ?, q35 = ?, q36 = ?, q37 = ?, q38 = ?, q39 = ?, q40 = ?, q41 = ?, q42 = ?, q43 = ?, q44 = ?, q45 = ?, q46 = ?, q47 = ?, q48 = ?, q49 = ?, q50 = ?, q51 = ?, q52 = ?, q53 = ?, q54 = ?, q55 = ? WHERE respondent_id = ?;");
mysqli_stmt_bind_param($proc, "ssiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiissi", $ip, $browser, $q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8, $q9, $q10, $q11, $q12, $q13, $q14, $q15, $q16, $q17, $q18, $q19, $q20, $q21, $q22, $q23, $q24, $q25, $q26, $q27, $q28, $q29, $q30, $q31, $q32, $q33, $q34, $q35, $q36, $q37, $q38, $q39, $q40, $q41, $q42, $q43, $q44, $q45, $q46, $q47, $q48, $q49, $q50, $q51, $q52, $q53, $q54, $q55, $respondent_id);
mysqli_stmt_execute($proc);
$mysql_error = mysqli_error($link);
if ($mysql_error!="") {
printf("Unexpected database error: %s\n", $mysql_error);
mysqli_stmt_close($proc);
mysqli_clean_connection($link);
exit();
} else
{
mysqli_stmt_close($proc);
mysqli_clean_connection($link);
update_completion_status($respondent_id, 'Started');
header("Location: index.php?r=".$rguid);
}
我哪里错了?
答案 0 :(得分:2)
我认为你不再在POST中提交数据的事实并不意味着它应该自动抛出和错误。我不写PHP,所以我不知道你的save.php做了什么,但假设它是一个有效的HTTP POST请求,在POST中发送数据然后什么都不做就不应该有任何违法行为。
答案 1 :(得分:1)
您可能必须更改服务器响应的方式,并使其返回不同的HTTP标头,这意味着错误而不是200 OK。
检查服务器返回的内容,并看到它为不存在的页面返回404状态。
有用的评论,
当我这样做时,它不保存数据,但显示“成功”消息。
这种成功与数据库查询的成功不同。那是 ajax电话的成功。如果你想检查mysql的错误,那么你 需要做this answer之类的事情。 看看我如何使用php文件返回成功或失败,然后进行处理 使用jquery进行响应。
如答案所示,在上述评论的链接中,ajax的成功可以 被看到明显不同于我的PHP返回的成功。保持 如果所有数据库查询都成功执行,请检查您的php文件, 如果没有返回消息失败,即使你返回此消息失败,ajax call返回成功,因为ajax调用当然是成功的。 这就是你如何获得php文件。