问题描述
我正在使用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
现在应该可以正常工作了。
如有任何疑问,请发表评论。