2017-10-16 32 views
5

Tôi đang cố gửi dữ liệu biểu mẫu bằng ajax. Nhưng có lỗi trong hoạt động ajax và chỉ có chức năng gọi lại "lỗi" được thực hiện. Đây là những gì tôi đã cố gắng:Cuộc gọi AJAX không hoạt động như mong đợi

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

}); 

Tuyến đường được định nghĩa là:

$f3->route('POST /itprocurement/save', 'GBD\Internals\Controllers\ITProcurementController->save'); 

Ngoài ra tôi nói thêm:

$f3->route('POST /itprocurement/save [ajax]', 'GBD\Internals\Controllers\ITProcurementController->save'); 

Tôi cố gắng trả lại một chuỗi đơn giản để gọi ajax ở lớp điều khiển . ITProcurementController.php:

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

Nhưng chỉ thực hiện gọi lại 'lỗi'. Tôi không thể xác định được những gì là sai. Hãy giúp tôi.

+0

Khi bạn thực hiện yêu cầu, hãy mở tab mạng trong các công cụ của nhà phát triển trong chrome hoặc firefox và cho chúng tôi biết phản hồi bạn đang nhận được – Chris

Trả lời

5

Bạn đang xác định mà bạn mong đợi json lại:

// 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" 
}); 

Những gì bạn gửi lại không phải là json:

echo 'Problem!'; 
return; 

Đây là một chuỗi không thể viện chứng, mà không phải là json hợp lệ.

Để gửi json hợp lệ trở lại, bạn sẽ cần:

echo json_encode('Problem!'); 
return; 

Bạn cũng có thể loại bỏ các thuộc tính dataType, tùy thuộc vào nhu cầu của bạn.

Các vấn đề liên quan