2016-01-21 122 views
-6

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

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

<?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'; ?> 

如果内部外“如果”获取执行时,它返回一个500错误的代码。如果我将&& 0 === 1放入外部“if”中,则不返回错误。

+2

由于您写入的代码已损坏,导致PHP停止致命错误,导致“500内部服务器错误”。检查开发者控制台的网络选项卡中的输出或服务器上的Apache日志。 –

+0

我第二上面。 –

+0

@NielsKeurentjes - 在发布答案的时候,你是如何得到24k代表的评论? –

回答

1

你的PHP代码试图做一些不正确的事情,从而打破了调用并返回一个500错误。请检查您在POST中收到的信息是否符合您的期望,也许它不是字符串,这就是为什么您的字符串操作操作不起作用

+0

这似乎没有问题:即使在变量的类型(is_string)上插入控件,情况也不会改变。 –

+0

几乎不可能在没有看到代码的情况下进行调试,只是告诉你它为什么会破坏并试图指向最可能原因的方向 – Pabs123

+0

是的,你是对的。对不起,我已将代码粘贴到问题的正文中。 –