jQuery Ajax表单提交错误处理

时间:2013-08-12 18:17:48

标签: jquery ajax error-handling save

我有以下代码:

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);
    }

我哪里错了?

2 个答案:

答案 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文件。