根据返回的数据类型应用if else条件

时间:2016-09-17 11:58:05

标签: javascript php json ajax

我从我的php文件返回数据,可以是json或其他任何东西。我想有条件地执行该功能。 这是php代码 -

<?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值,如果数据库中没有这样的值,那么它将返回“not ok”。

在此我正在应用这样的条件 -

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);
         }
       }
      });
    }
}

现在,我面临的问题是它总是只进入else-condition而不是if-condition.Maybe因为我已经提到数据类型为json。当我删除数据类型:json时,它表现不佳。 我该如何处理这种情况。让我知道你是否需要其他任何东西。 提前谢谢。

2 个答案:

答案 0 :(得分: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 {

答案 1 :(得分:0)

如果你要请求json,那么你应该格式化你的&#34;不好的&#34;作为json的回应。它可以是简单的事情:

{&#34;错误&#34;:&#34;不好&#34;}

让你的js测试是否存在错误密钥。