2016-01-21 156 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

是的,你是對的。對不起,我已將代碼粘貼到問題的正文中。 –