AJAX调用未按预期工作

4

我正在尝试使用Ajax发送表单数据,但是出现了错误,并且只有“error”回调函数被执行。

以下是我的尝试:

$("#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');

我尝试在控制器类ITProcurementController.php中向ajax调用返回一个简单的字符串。

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

但只有“error”回调函数被执行。我无法确定问题出在哪里,请帮忙。


当您发送请求时,请在Chrome或Firefox的开发者工具中打开网络选项卡,并告诉我们您收到的响应。 - Chris
1个回答

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属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接