AJAX调用未按预期工作

时间:2017-10-16 08:36:25

标签: php jquery 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');
}

但只有'错误'回调被执行。我找不到有什么问题。请帮助。

1 个答案:

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