AJAX调用没有按预期工作

问题描述:

我想使用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

您指定您希望回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" 
}); 

您发回的不是JSON:

echo 'Problem!'; 
return; 

这是一个不带引号的字符串,它是不是有效的JSON。

要发送有效的JSON回来,你将需要:

echo json_encode('Problem!'); 
return; 

您也可以删除dataType属性,根据您的需要。