2014-02-19 22 views
1

我應該如何處理這種情況下的兩種可能的錯誤?我不確定這是否是推薦的方式,請有人建議?我用這個json_encode()正確處理了錯誤嗎?

if (isset($_GET['numberofwelds']) && isset($_GET['numberofconwelds']) 
      { 
       // Now we know both values definitely exist, VALIDATE them 
       $numwelds = $_GET['numberofwelds']; 
       $numconwelds = $_GET['numberofconwelds']; 

       if (is_int($numwelds) && is_int($numconwelds)) 
       { 
        // Calculate your total 
        $total = $numwelds + $numconwelds; 
        echo json_encode($total); 
       } 
       else 
       { 
        $response = array("status" => "failure", "message" => "GET params were not numbers"); 
        echo json_encode($response); 
        } 

      else 
      { 
       $response = array("status" => "failure", "message" => "GET params do not exist"); 
       echo json_encode($response); 
       } 
      } 
+0

你應該編碼爲json的錯誤響應。現在你顯然在第一個IF和最後一個ELSE之間缺少一個括號 –

+0

好吧,所以你編輯了你的代碼,但是你使用了哪些代碼?你至少試過嗎?那麼你的問題是什麼? –

+1

處理兩個錯誤是什麼意思?當然,一次只能遇到一個錯誤,就像上面說的那樣,你應該編碼爲JSON這些$回覆 –

回答

1

您首先需要爲PHP中的響應設置CONTENT-TYPE。這需要在任何輸出設置之前完成,否則您將需要使用PHP的輸出緩衝區。

首先設置與此頭:

header("CONTENT-TYPE: application/json"); 

否則,你將需要解析JSON在JavaScript。

例如$ .parseJSON(JD);

其次,如果你想返回JSON數據爲響應陣列,您可以執行以下操作:

$response = array("status" => "failure", "message" => "GET params were not numbers"); 

echo json_encode($response); 

與響應的Content-Type設置,現在你將有一個JSON對象你的JavaScript。

E.g.

的console.log(jd.status)將輸出:故障

的console.log(jd.message)將輸出繼電器:GET PARAMS沒有數字

(視生成的錯誤。)

請記住,這些錯誤並不能代替jQuery的AJAX錯誤。這些將在成功方法中返回。所以你會在那裏處理它們。

E.g

$.ajax({ 
    success:function(jd){ 
      console.log(jd.status); 
      } 
}); 

記住了Ajax調用 「json的」 設置 「數據類型」 選項。

E.g

$.ajax({ 
     dataType:"json" 
    });