通过AJAX在简单表格POST上获得500错误 - 不确定是什么错?

时间:2014-12-27 15:29:06

标签: javascript php jquery ajax

我不明白为什么我在这个简单的基于AJAX的表格POST到PHP上得到500错误....介意看看?这可能是一件简单的事情,我只是没有抓住,但我现在正在摸不着头脑。

JS:

    $form.submit(function(e) {
        e.preventDefault();
        var formData = $form.serialize();
        $.ajax({
            url: $form.attr('action'),
            type: 'POST',
            data: formData
        }).done(function(res) {
            console.dir(res);
            alert('success!'); // update status text
            $form[0].reset(); // reset the form
            $form.find('input[type="submit"]').attr('disabled', 'disabled');
        }).fail(function(data) {
            alert('error');
        });
    });

PHP:

if($_SERVER["REQUEST_METHOD"] == "POST") {

  if( !empty($_POST['captcha']) ) {
    processForm( $_POST['formName'] );
  } else {
    http_response_code(401);
    echo "Unauthorized.";
  }
} else {
    // not valid. ignore
    http_response_code(400);
    echo "Bad Request.";
}

PHP:processForm():

function processForm(string $type) {

    if ($type == 'contact') {
        http_response_code(200);
        echo "contact form";
    }
    if ($type == 'appointmentRequest') {
        http_response_code(200);
        echo "appointment form";
    }

    // send the email

    // return confirmation / failure

    // die

}

我刚收到500错误。我确信请求指向正确的位置。

1 个答案:

答案 0 :(得分:3)

抱歉,您可以阅读PHP 5 documentation

  

类型提示只能是objectarray(自PHP 5.1以来)类型。 int的传统类型提示不受支持。

由于string不是类,因此不能在函数中“键入”它,因此会出错。

您可以使用filter_input

等其他方法检查字符串是否为字符串