我正在尝试使用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 :(得分:5)
你指的是你期待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
属性。