2016-09-17 64 views
0

我從我的php文件返回的數據可以是json或其他任何東西。並且我想有條件地執行該函數。 這裏是PHP代碼 -應用if else條件取決於返回的數據類型

<?php 
ini_set("display_errors", 1); 

require_once("db.php"); 

$resultnew = "SELECT DISTINCT(`item_name`) FROM item_master WHERE `item_name`='" . $_POST['key'] . "'"; 

$resultfinal = mysqli_query($conn, $resultnew); 

if (mysqli_num_rows($resultfinal) > 0) 
    { 
     $sql = "SELECT * FROM `item_master` WHERE `item_name` = '" . $_POST['key'] . "' "; 
    $result=mysqli_query($conn,$sql); 
    while($row = mysqli_fetch_assoc($result)) 
    { 

     $item_name = $row["item_name"]; 
     $des = $row["item_description"]; 
     $qty = $row["item_in_qty"]; 
     $rate = $row["item_price"]; 
     $unit = $row['item_unit']; 

     } 
     echo json_encode(array("item_name"=>$item_name,"des"=>$des, "qty"=> $qty, "rate"=> $rate, "unit"=> $unit)); 

} 
else{ 
    echo "not ok"; 

} 


?> 

在上面的代碼中,如果在數據庫中的任何匹配值,那麼它將返回JSON值和如果在數據庫中沒有這樣的值,則它會返回「不正常」。像這個 -

function checkitems(targetID) 
{ 
    var items = $('#items_' + targetID).val(); 
    if (items != "") { 
     $.ajax({ 
     type: 'post', 
     url: 'itemcheck.php', 
     data: {key: items}, 
     dataType: 'json', 
     success: function(data) { 

     if (data == "not ok") { 

      $('#myitemmodal').modal("show"); 

     } else { 

      var tr = $(this).closest('tr'); // here is the code for retrieving the values. i think here i need to make some changes  
      $('#price_' + targetID).val(data.rate); 
      $('#size_' + targetID).val(data.des); 
      $('#qty_' + targetID).val(data.qty); 
      $('#unit_' + targetID).val(data.unit); 
     } 
     } 
     }); 
    } 
} 

現在,問題是我面臨的

在此我申請條件是,它總是進入其他條件,而不是在IF-condition.Maybe因爲我已經提到數據類型爲json。而當我刪除數據類型:JSON,它表現不佳。 我該如何處理這種情況。讓我知道你是否需要別的東西。 在此先感謝。

回答

2

由於您期待獲得JSON,所以您應該返回JSON,並且"not ok"不是有效的JSON。

<?php 

    ... 
    if (mysqli_num_rows($resultfinal) > 0) { 
     ... 
     echo json_encode(
      array("data" => 
       array("item_name"=>$item_name,"des"=>$des, "qty"=> $qty, "rate"=> $rate, "unit"=> $unit) 
      ) 
     ); 
    } else { 
     echo json_encode( 
      array("data" => "not_ok") 
     ); 
    } 

然後抓住它

success: function(data) { 

    if ("data" in data && 
     typeof data.data == "string" && 
     data.data.trim() == "not ok") { 

     $('#myitemmodal').modal("show"); 

    } else { 
+0

no ..它不工作.. @ adeneo –

+0

如果你做'console.log(data)'你會得到什麼。 – adeneo

+0

它工作..謝謝..唯一的問題是'data.data.trim()==「不好」應該是'data.data.trim()==「not_ok」' –

0

如果您請求JSON,那麼你應該格式化你的「不正常」的JSON響應。它可以作爲簡單的東西:

{「錯誤」:「不正常」}

和你的JS測試錯誤鍵的存在。