1

私は次のJQueryコードを持っています:

 $('#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での挿入クエリが成功したかどうかに関係なく、HTTPリクエストが失敗した場合などを除いて、「ok」メッセージがコンソールにエコーされます。

Cakeアクションに検証エラーまたはその他の挿入エラーが発生した場合に、JQueryがエラーとして認識してコンソールに「notok」をエコーするエラーをJQueryに送り返すようにCakeを取得するにはどうすればよいですか?

4

1 に答える 1

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

    });
});

ajax編集アクション

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; 
    }
}
于 2012-07-14T07:15:26.267 に答える