【问题标题】:PHP Process page 404'ing when sending back a good JSON response发回良好的 JSON 响应时,PHP 处理页面 404
【发布时间】:2015-11-12 15:11:15
【问题描述】:

在 WordPress 网站上有一个我通过 ajax 调用的 sendmail.php 页面。

这是它的基本外观:

if ($_POST) {

    foreach($_POST as $field => $val) {
        if ($val == '') {
            $jsonReturn = ['success' => false, 'message' => 'Validation errors whilst processing your form, please go back and check.'];
            echo json_encode($jsonReturn);
            die();
        }
    }

    if ($noErrors) { // set elsewhere, but works okay
        /*
            Send an email
        */

        if ($mail->send()){
            $jsonReturn = ['success' => true, 'message' => "Thank you, message sent."];
            echo json_encode($jsonReturn);
        }
    }

} else {
    header("Location: /");
    die();
}

如果页面顶部的“验证”失败,我会返回 200 页,其中包含 JSON 返回的成功 false。

但是,如果我通过验证并发送电子邮件然后结束 json 将其返回 404 的页面。

我也测试了:

$jsonReturn = ['success' => true, 'message' => "Thank you, message sent."];
echo json_encode($jsonReturn);

直接在第一个foreach下,它也是404的。所以我猜这有什么问题?

任何帮助。

【问题讨论】:

  • “200 页后退”是什么意思?你的意思是一个页面,还是响应?
  • 我调用的页面显示它的状态为 200。当表单验证通过时,我将下一部分代码称为 404

标签: php jquery json ajax


【解决方案1】:

排序后,输入字段的名称为“name”。

改变这一点,与一位同事交谈,似乎 WordPress 为其查询保留了一组特定的字段名称。在这种情况下,它会看到字段名称并将请求发送到另一个不存在的页面。

我相信在 WP 有更多知识的人可以更好地解释,但现在如果有人遇到此问题,请确保检查输入名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多