Laravel - Ajax:1种形式的多个输入

时间:2017-12-04 03:40:10

标签: javascript jquery ajax laravel-5

尝试在数据库的特定列中创建多输入表单,包括json,text和image ..并在编辑时更新它。

类别是json列。 图像是图像列。 休息是文字。

检索部件运行良好,因为它是纯粹的Laravel,但我无法向数据库发送任何内容,无论是更新还是创建。

我被困在Json中,所以我还没有开始上传图片。

Json是在chrome控制台中生成的,并且工作正常,但是我收到错误500并且控制台日志为我的变量类别提供了未定义。

不确定为什么它没有反映在Laravel数据库中,下面是我的Ajax,路由和控制器

的jQuery

$(document).ready(function(){

var myUrl;
var Categories;
var type;

//create new task / update existing task
$("#reset").click(function (e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
})

e.preventDefault(); 



var myUrl = window.location.href;
var Categories = JSON.stringify($('#form-fields-tags').val());
var type = "POST";
console.log(Categories); 
$.ajax({

type: type,
url: myUrl,
data: Categories,
dataType: 'json',
success: function (data) {
console.log(Categories);
},
error: function (data) {
var errors = $.parseJSON(data.responseText);
$.each(errors, function (key, value) {
$('#' + key).parent().addClass('error');
});
}
});
});
});

控制器

public function postCreate(Request $request)
     {
     $post = new blog([
     'title'=>$request->input('title'),
     'Smaller'=>$request->input('Smaller'),
     'Categories'=>$request->input('Categories'),
     'BodyS'=>$request->input('BodyS'),
     'Status'=>$request->input('Status')
     ]);
$post->save();
     return redirect()->route('admin.blog')->with('info', 'Post created, Title is: ' . $request->input('title'));
      }
public function postUpdate(Request $request)
     {
     $post = blog::find($request->input('Bid'));
     $post->title = $request->input('title');
     $post->Smaller = $request->input('Smaller');
     $Cat = json_decode($post->Categories);
     $Cat = $request->input('Categories');
     $post->BodyS = $request->input('BodyS');
     $post->Status = $request->input('Status');
$post->save();        
     return redirect()->route('admin.blog')->with('info', 'Post edited, new Title is: ' . $request->input('title'));
}

Blade Blog.edit / update view

 <div class="form-group">
      <label class="col-sm-3 control-label no-padding-right" for="form-field-tags">Categories</label>

      <div class="container-fluid">
      <div class="inline">
      <input type="text" name="Categories" id="form-field-tags" value="{{ $post->Categories }}" placeholder="Enter tags ..." name="Categories" />
      </div>
 </div>
 </div>

刀片创建视图

 <div class="container-fluid">
 <div class="inline">
 <label>
 <input type="text" name="Categories" id="form-field-tags"value="" placeholder="Enter tags ..." name="Categories" />

 </label>

 </div>
 </div>

路线

 Route::group(['prefix'=> 'blog'], function(){

      Route::get('/', [
      'uses'=>'BlogController@getBlogIndex',
      'as'=>'admin.blog'
      ]);
      Route::get('/create',[
      'uses'=>'BlogController@getPostCreate',
      'as'=>'admin.createB' 
      ]);
      Route::get('/edit/{Bid}',[
      'uses'=>'BlogController@getPostEdit',
      'as'=>'admin.editB' 
      ]);
      Route::post('/create', [
      'uses'=>'BlogController@postCreate',
      'as'=>'admin.createB'
      ]);
      Route::post('/edit', [
      'uses'=>'BlogController@postUpdate',
      'as'=>'admin.updateB'
      ]);
 });

由于

2 个答案:

答案 0 :(得分:1)

如果要在数据库中使用create方法

创建新条目
  • 确保您已在控制器页面顶部导入模式 l
  • 将模型类名重命名为 博客 ,而非 博客
  • 相应地将模型文件名更改为 Blog.php

然后使用:

use App\Blog;

public function postCreate(Request $request)
{
    Blog::create(['title'=>$request->input('title'), ..]);

    return redirect()->route('admin.blog')->with('info', 'Post created, Title is: ' . $request->input('title'));
}

答案 1 :(得分:0)

我的不好,添加ajax是过度杀死而不是必需的,因为laravel请求正在执行我需要的,我调整代码,现在一切正常。