2017-06-30 10 views
1

これは私がjsonデータをチェックしようとしているところです。データが正しく挿入されたら、私は上記のjqueryを成功コードに入れたい。しかし、それが挿入されていない場合は、私は他のコードを実行したい。しかし、if else条件が正しく機能していません。私が試したPHPコードとAjaxコードが含まれています。私はそれを正しくやっていますか?AJAXの成功のelse文なら

AJAX

$("#frm_add").on('submit',(function(e) { 

       e.preventDefault(); 
       var img= new FormData(this); 
       datas = $("#frm_add").serializeArray(); 
       $.each(datas,function(key,input){ 
        img.append(input.name,input.value); 
       }); 
       $.ajax({ 
        url: "response_categories.php", // Url to which the request is send 
        type: "POST",    // Type of request to be send, called as method 
        //data:new FormData(this), 
        data:img, 
        // data: {img:img,datas:datas}, // Data sent to server, a set of key/value pairs (i.e. form fields and values) 
        contentType: false,  // The content type used when sending data to the server. 
        cache: false,    // To unable request pages to be cached 
        processData: false,  // To send DOMDocument or non processed data file it is set to false 
        success: function (data) // A function to be called if request succeeds 
        { 

         if(data == true) 
         { 
          $('#add_model').modal('hide'); 
          $("#categories_grid").bootgrid('reload'); 
         } 
         else 
         { 
          $("#nameerr").html("<p id='error' style='color:red'>"+data+"</p>"); 
         } 

        } 

       }); 
      })); 

PHP

function insertCategories($params) 
    { 

     $fileName = $_FILES['cat_image']['name']; 
     $name = $params['cat_name']; 
     $type = $params['cat_type']; 
     $switch = $params['cat_switch']; 
     $chk=mysqli_query($this->conn,"select * from categories where cat_name='$name'"); 
     if(mysqli_num_rows($chk)==0) 
     { 
      $sql = "INSERT INTO `categories` (cat_name,cat_image, cat_type, cat_switch) VALUES('$name','$fileName', '$type','$switch'); "; 
      echo $result = mysqli_query($this->conn, $sql) or die("error to insert Categories data"); 


      if ($result) { 
       if (file_exists("images/" . $_FILES["cat_image"]["name"])) { 
        echo $fileName . " <span id='invalid'><b>already exists.</b></span> "; 
       } else { 
        $sourcePath = $_FILES['cat_image']['tmp_name']; // Storing source path of the file in a variable 
        $targetPath = "images/" .$fileName; // Target path where file is to be stored 
        move_uploaded_file($sourcePath, $targetPath); // Moving Uploaded file 
       } 

      } 
      echo json_encode($result); 

     } 



    } 
+0

あなたの完全なPHPコードですか? 'insertCategories'は呼び出されません。 – chris85

+0

戻ってくるものを見るには' data'をチェックしたいかもしれません。あなたは '$ result'とjson_encodedの結果をエコーし​​ています。 – aynber

+1

には2つの 'echo'があります。 jsonを送信する場合、ajaxでjsonを必要とし、ただ1つのechoを送信する必要があります。 – charlietfl

答えて

0

は、コマンドが失敗した場合や、一般的な

$.ajax({ 
    url: "response_categories.php", // Url to which the request is send 
    type: "POST",    // Type of request to be send, called as method 
    data:img, 
    contentType: false,  // The content type used when sending data to the server. 
    cache: false,    // To unable request pages to be cached 
    processData: false,  // To send DOMDocument or non processed data file it is set to false 
    success: function (data), // A function to be called if request succeeds 
    { 
     if(data) 
     { 
      $('#add_model').modal('hide'); 
      $("#categories_grid").bootgrid('reload'); 
     } 
     else 
      { 
      $("#nameerr").html("<p id='error' style='color:red'>"+data+"</p>"); 
      } 

    } 
    error: function (data) 
    { 
     $("#namerr".html("<p id='error' style='color:red'>"+data+"</p>"); 
    } 
}); 
0
で返さないデータを場合に実行するために、あなたのAJAX呼び出しでエラーコマンドを追加します。

私はあなたがhavだと思うあなたはdie()メソッド(PHP:12行)を呼び出すことがあります。json_endcode()(PHP:25行)を呼び出すこともあります。あなたがすべき行動のこのタイプの

  1. 常に出力JSONバックエンドのスクリプトからは。レスポンスタイプを混在させるのは本当に厄介ですが、解析とテストは難しいです。均一な構造を持つ
  2. 使用レスポンスオブジェクト - それは、複雑なアプリケーションを構築するに役立つかもしれないと簡単には修正するために

例の擬似コード: PHP ajax.success()方法で次に

if($success) { 
    die(json_encode([ 
      'error' => false, 
      'message' => 'Thank You', 
      'data' => $some_extra_data 
     ])); 
} else { 
    die(json_encode([ 
      'error' => true, 
      'message' => 'Sorry', 
      'data' => $some_extra_data 
     ]));  
} 

、その扱いが本当に簡単:

success: function (data) { 

    try { 

     var response = JSON.parse(data) 

     if(response.error == true) { 
      $('#nameerr').text(response.message) 
     } else { 
      $('#add_model').modal('hide'); 
      $("#categories_grid").bootgrid('reload'); 
     } 

    } catch (err) { 
     alert('Sorry. Server response is malformed.') 
    } 
}