OctoberCMS回调,用于在AJAX请求后成功执行数据库操作

问题描述

我通过Chrome扩展程序通过AJAX向我的OctoberCMS控制器发送数据。 如何在Chrome扩展程序中识别出数据库操作成功? 因此,目标是在成功更新数据库后,可以在AJAX调用中使用done()。 我是否必须从控制器中退回东西?

扩展名中的Ajax

$.ajax({
    headers: {
        'X-CSRF-TOKEN': $('Meta[name="csrf-token"]').attr('content')
    },url: "/saveData",type: "POST",dataType: "JSON",data: { "data": data}
}).done(function((){//does nothing});

OctoberCMS Controller

  function saveData(Request $request)
{
    $data = post('data');

    //do some actions with the data;
    
    DB::table('users')->where(['id' => Auth::getUser()->id])->update(['data' => $data]);
}

解决方法

您可以检查响应

从服务器端

function saveData(Request $request)
{
    $data = post('data');

    //do some actions with the data;
    
    DB::table('users')->where(['id' => Auth::getUser()->id])->update(['data' => $data]);

    // if all good return success
    return ['success' => true];
    // if something is not correct
    // return ['success' => false];
}

客户端

$.ajax({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },url: "/saveData",type: "POST",dataType: "JSON",data: { "data": data}
}).done(function((data){
    if(data.success == true) {
       // yes all good data is updated
    }
    else {
       // data is not updated some error handling 
    }
}).fail(function() { 
    // data is not updated some error handling 
    // failed in case server is not able to answer or error 
});

如有疑问,请发表评论。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...