2017-10-16 12 views
5

ajaxを使用してフォームデータを送信しようとしています。しかし、ajax操作にはエラーがあり、 "エラー"コールバック関数だけが実行されます。 は、ここに私が試したものです:AJAXコールが期待通りに機能しない

$("#issue_submit").click(function (e) { 

    console.log("clicked on the issue submit"); 
    e.preventDefault(); 

    // Validate the form 
    var procurementForm = $("#it_procuremet_form"); 

    if($(procurementForm).valid()===false){ 
     return false; 
    } 

    // Show ajax loader 
    appendData(); 

    var formData = $(procurementForm).serialize(); 

    // Send request to save the records through ajax 
    var formRequest = $.ajax({ 
     url: app.baseurl("itprocurement/save"), 
     data: formData, 
     type: "POST", 
     dataType: "json" 
    }); 

    formRequest.done(function (res) { 
     console.log(res); 
    }); 


    formRequest.error(function (res, err) { 
     console.log(res); 
    }); 


    formRequest.always(function() { 
     $("#overlay-procurement").remove(); 
     // do somethings that always needs to occur regardless of error or success 
    }); 

}); 

ルートは次のように定義されています

$f3->route('POST /itprocurement/save', 'GBD\Internals\Controllers\ITProcurementController->save'); 

また、私が追加:

$f3->route('POST /itprocurement/save [ajax]', 'GBD\Internals\Controllers\ITProcurementController->save'); 

を私はコントローラクラスでのAJAX呼び出しに単純な文字列を返すみました。 ITProcurementController.php

public function save($f3) 
{ 
    echo 'Problem!'; 
    return; 
    $post = $f3->get('POST'); 
} 

しかし、唯一の 'エラー' コールバックが実行されます。私は間違っているものを見つけることができません。助けてください。

+0

リクエストを行うときは、chromeまたはfirefoxの開発ツールでネットワークタブを開いて、どのような回答を得ているかをお知らせください – Chris

答えて

5

あなたはあなたが戻ってJSONを期待するように指定されている:何送り返すことはJSONではありません

// Send request to save the records through ajax 
var formRequest = $.ajax({ 
    url: app.baseurl("itprocurement/save"), 
    data: formData, 
    type: "POST", 
    // Here you specify that you expect json back: 
    dataType: "json" 
}); 

echo 'Problem!'; 
return; 

これは有効なJSONではありません引用符で囲まれていない文字列です。

あなたが必要となり、バック有効なJSONを送信するには:

echo json_encode('Problem!'); 
return; 

また、あなたのニーズに応じて、dataType属性を削除することができます。

関連する問題