【问题标题】:Ajax giving error 500Ajax 给出错误 500
【发布时间】:2016-01-21 22:07:46
【问题描述】:

我有一个应用程序每秒通过 Ajax 向 PHP 文件发出 POST 请求。如果我尝试在 php 中拆分 $_POST 数组中收到的字符串,或者尝试“json_decode”它,我会收到 500 错误。 如果我不执行任何这些操作,我不会收到任何错误。 为什么?

这是处理 Ajax 请求的 PHP 代码(使用两个 POST 变量):

    <?php
    $mysqli = new mysqli(*data*);
    if (is_string($_POST["lid"]) && (is_string($_POST["price"]) || is_integer($_POST["price"])) && 0===1) {
        $li_id = $_POST["lid"];
        $esc_li_id = $mysqli->real_escape_string($li_id);
        $li_price = intval($_POST["price"]);

        if ( ($li = $mysqli->query("SELECT listing_id, price, buyer_id, auction_name FROM listings WHERE listing_id = '$esc_li_id' AND schedule_requested = '1' AND finished = '0'")) && ($mysqli->affected_rows > 0) ) {
            if ( intval($li["price"]) !== $li_price ) {
                $response = array($li["price"], $li["buyer_id"], $li["auction_name"]);
            if ($logged === 1) {
                $response[] = $user_id;
            }
            echo json_encode($response);
        } else {
            echo "err";
        }
    } else {
        echo "err";
    }
    } else echo 'err'; ?>

如果外部“if”中的代码被执行,它会返回 500 错误。如果我将&amp;&amp; 0 === 1 放入外部“if”中,则不会返回错误。

【问题讨论】:

  • 因为你写的代码坏了,导致 PHP 在致命错误上停止,导致“500 Internal Server Error”。检查开发者控制台的网络选项卡中的输出,或服务器上的 Apache 日志。
  • @NielsKeurentjes - 在以 cmets 的身份发布答案时,您如何在此处获得 24k 代表?
  • @jimboJonny,秘籍。
  • @JimboJonny 因为我只发布真正解决问题的答案。当我只是将问题确定为“我今天没有带水晶球,但这里有一些自己解决问题的建议”时,我不认为这是一个答案(我应该这样做)。
  • 为什么不在此处包含代码?喜欢猜谜游戏吗?

标签: javascript php ajax


【解决方案1】:

您的 PHP 代码试图做一些不正确的事情,从而中断调用并返回 500 错误。检查您在 POST 中收到的信息是否是您所期望的,也许它不是字符串,这就是您的字符串操作操作不起作用的原因

【讨论】:

  • 这似乎不是问题:即使在变量的类型 (is_string) 上插入一个控件,情况也不会改变。
  • 几乎不可能在没有看到代码的情况下调试它,只是告诉你它为什么会出错并试图为你指出最可能的原因
  • 是的,你是对的。抱歉,我已将代码粘贴到问题正文中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多