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');
}
但是,只有 '错误' 回调执行。我找不到有什么问题。请帮忙。
答
您指定您希望回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
属性,根据您的需要。
当您执行请求时,请使用chrome或firefox中的开发人员工具打开网络选项卡,并让我们知道您得到的响应 – Chris