Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Laravel中使用Ajax将数据插入MySQL_Javascript_Jquery_Mysql_Laravel - Fatal编程技术网

Javascript 在Laravel中使用Ajax将数据插入MySQL

Javascript 在Laravel中使用Ajax将数据插入MySQL,javascript,jquery,mysql,laravel,Javascript,Jquery,Mysql,Laravel,我有一个JS变量,它在我的blade视图中存储JSON值,我想将它插入Laravel项目中的MySQL。但我不知道怎么把它写对。这是我在刀片视图中尝试的: 保存到数据库 var formBuilder=$('#fb editor').formBuilder(); $(“#saveBtn”)。单击(函数(){ var mFormData=formBuilder.actions.getData();//我的JSON数据 $.ajax({ 键入:“POST”, url:“/saveToDataba

我有一个JS变量,它在我的blade视图中存储JSON值,我想将它插入Laravel项目中的MySQL。但我不知道怎么把它写对。这是我在刀片视图中尝试的:


保存到数据库
var formBuilder=$('#fb editor').formBuilder();
$(“#saveBtn”)。单击(函数(){
var mFormData=formBuilder.actions.getData();//我的JSON数据
$.ajax({
键入:“POST”,
url:“/saveToDatabase”,
数据:{“mFormData”:mFormData}
}).done(函数(msg){
警报(“数据已保存!”);
});
});

首先,在.env文件中输入数据库详细信息

你需要使用两条路线。一个用于渲染刀片文件,另一个用于api请求

在routes/web.php上,定义您的路线

Route::get('/', function(){ return view('app');});
使用HTML代码在参考资料/视图/文件夹中创建app.blade.php

在routes/api.php上,如下定义您的路由

Route::post('saveToDatabase','HomeController@saveToDb')
接下来,需要在HomeController上创建saveToDb方法

打开App\Http\Controller\HomeController.php

创建一个新方法

public function saveToDb()
{
  // Database Insertion Code goes here

}
Laravel为POST请求提供CSRF保护。因此,通过将异常添加到App\Http\Middleware\VerifyCSRFToken.php中,向该路由添加异常

  protected $except = [
        'api/*'
    ];
对于插入操作,我们可以在模型的帮助下完成

因此,首先在App\文件夹中创建Form.php

在其中,我们指定数据库的字段

<?php

use Illuminate\Database\Eloquent\Model;

class Form extends Model
{
    protected $fillable = [
        "key", "data"
    ];

    protected $hidden = [];

}

现在我们可以更新之前编写的saveToDb函数

public function saveToDb()
{
  // Request all the post data
  $req = Request::all();    
  // From that post data store key and data part to form table
  Form::create($req);
}
如果您在路线、控制器或型号方面有任何问题。请参阅Laravel官方文件:


这一条对于开始学习拉威尔也很有用

未正确选择路线。是“不查找用于执行某些操作”

您在routes/api.php中定义了路由吗?我只在blade视图中编写代码,所以我想我可以在web.php中使用默认路由。我错了吗?你使用的是Laravel,那么你为什么要使用
mysqli\u connect
?这是我放在xampp htdocs文件夹中运行的2.php文件。我只是让你明白我在做什么。我想在Laravel.com中这样做,因为Laravel中的路由没有在web.php中定义。您是否在web.php中添加了路由?嗯,我应该在哪里编写插入查询?是的。您可以像这样使用$values=array('key'=>1,'data'=>Dayle'),而不是model;DB::table('form')->insert($value);但我的JSON值存储在blade视图中的JS变量中,该变量为var mFormData=formBuilder.actions.getData()//JSON数据返回。我如何在查询中使用它?当您写入return$数据时;在控制器方法中。它将返回json数据。是否要将数据库中的数据返回到json?可能您误解了我的问题。我编辑了我的帖子。我有一个JS变量,用于存储我的JSON值。现在我想将JSON值插入到我的数据库中。我不需要从数据库返回数据。我像你说的那样在.env文件中配置并创建了模型和控制器。接下来我该怎么办?非常感谢。对我想是因为web.php中没有这个url。但我只在blade视图中编写ajax,我没有任何控制器和函数,我不知道如何为此编写路由。请记住,在laravel中,post需要CSRF。
public function saveToDb()
{
  // Request all the post data
  $req = Request::all();    
  // From that post data store key and data part to form table
  Form::create($req);
}