2012-07-13 32 views
1
發送識別錯誤的JQuery

我有以下的jQuery代碼:從CakePHP的

$('#dropdown').bind('change', function() {  
    var formData = $('#newform').serialize() 
    $.ajax({ 
     type: 'POST', 
     url: baseUrl+"crm/orders/ajaxEdit", 
     data: formData, 
     success: function(){ 
      console.log("ok"); 
     }, 
     error: function() { 
      console.log("not ok"); 
     } 
    }); 
}); 

ajaxEdit動作很簡單:

function ajaxEdit() { 
     $this->layout = 'ajax'; 
     $this->autoRender = false; 
     $this->Order->save($this->data['Order']); 
    } 

它工作正常,該數據從形式發佈到我的CakePHP控制器中的正確操作。

但是,無論CakePHP中的插入查詢是否成功,「ok」消息都​​會被回送到控制檯,除非HTTP請求失敗或出現問題。

如何獲取蛋糕以將錯誤發回給JQuery,以便在Cake操作中存在驗證錯誤或其他插入錯誤的情況下,JQuery會將其識別爲錯誤並回顯「不正常」給控制檯?

回答

0

試試這個:jQuery代碼

$('#dropdown').bind('change', function() {  
    var formData = $('#newform').serialize() 
    $.ajax({ 
     type: 'POST', 
     url: baseUrl+"crm/orders/ajaxEdit", 
     data: formData, 
     success: function(output){ 
      var x = jQuery.parseJSON(output); 
      if(x.success == 1){ 
       console.log("ok"); 
      }else{ 
       console.log("not ok"); 
      } 
     }, 

    }); 
}); 

阿賈克斯編輯操作

function ajaxEdit() { 
    $this->layout = 'ajax'; 
    $this->autoRender = false; 
    if($this->Order->save($this->data['Order'])){ 
     $res = array('success'=>1); 
     $str=json_encode($res); 
     echo $str; 
    } 
    else{ 
     $res = array('success'=>0); 
     $str=json_encode($res); 
     echo $str; 
    } 
} 
+0

,看起來像它的工作,但有我爲什麼不能用這似乎是內置什麼特別的原因在JQuery的錯誤處理能力,並把我的錯誤邏輯在'錯誤:'? CakePHP中沒有任何東西可以返回,以使JQuery將錯誤視爲錯誤而不是觸發條件成功的關鍵。如果沒有,沒關係,我會標記你的答案是正確的......但我只是想先清楚。 – Joseph 2012-07-16 07:51:05

+0

對於在Ajax編輯動作的其他部分,你可以使用 $ invalid = $ this-> Order-> invalidFields(); echo json_encode($ invalid); 由此你可以在視圖中看到錯誤,所以jquery可以處理它。 – Krishna 2012-07-16 12:24:28

+0

是的,但我的觀點是,所有的東西仍然在JQuery的'success:'下處理,所以JQuery不'知道'這是一個錯誤。我想要做的是從我的Cake應用程序向JQuery傳遞一個響應,JQuery將識別爲錯誤並在'error:'下執行代碼: – Joseph 2012-07-17 02:54:21