如何在OctoberCMS上传递AJAX呼叫

问题描述

我正在使用OctoberCMS,用户插件,我想通过AJAX将数据发送到控制器,并将数据保存在数据库中(在登录用户的列中)。

所以我在 routes.PHP

中创建了一条新路线
<?PHP
Route::get('saveHighscore','test\Profile\Controllers\Highscore@saveHighscore')
->middleware('web');

还有一个控制器

<?PHP
namespace Test\Profile\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use October\Rain\Auth\Models\User;
use RainLab\User\Facades\Auth;

class Highscore extends \Illuminate\Routing\Controller
{
function saveHighscore(Request $request) {
    DB::table('users')->where(['id' => Auth::getUser()->id])->update(['highscore' => $request]);
}
}

我的jQuery调用

$.ajax({
        headers: {
            'X-CSRF-TOKEN': $('Meta[name="csrf-token"]').attr('content')
        },url: "/saveHighscore",type: "POST",data: highscore
    });

但是没有任何效果。如果我在浏览器中使用控制器中的伪数据调用/ saveHighscore,则效果很好

解决方法

AJAX框架仅适用于CMS控制器或后端控制器(扩展后端/类/控制器的控制器)。如果您想通过AJAX发送数据而不使用内置的AJAX框架,那么我们将不得不从浏览器开发工具的控制台/网络标签中查看更多信息,以了解失败的确切原因。

,

它应该可以正常工作。

但是我认为您要提出2个不同的请求

ajax config中,您指定了-> type: "POST",您正在监听get的请求

也许您只需要更改Route::get -> Route::post

现在应该可以正常工作了。

如有任何疑问,请发表评论。

相关问答

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