[英]laravel ajax not posting to database
我正在嘗試添加帖子而不用刷新頁面通過使用jquery ajax刷新頁面。
它沒有發布到我的MySQL數據庫,我也不知道為什么。
我遵循本教程
Vue.js看起來像是我將來可以使用的東西,但是我無法將其包裹住
有什么建議么 ?
Dashboard.blade.php
@extends('layouts.layout')
@section('title')
Dashboard
@endsection
@section('content')
<div class="dashboard eli-main">
<div class="container ">
<div class="row">
<div class="col-md-6 col-md-12">
<h1>{{$user->username}}</h1>
<h4>What do you have to say?</h4>
<form>
<div class="form-group">
<textarea class="form-control" name="body" id="body" rows="5" placeholder="Your Post"></textarea>
</div>
<button type="submit" id="add" class="mybtn2">Create Post</button>
<input type="hidden" value="{{ Session::token() }}" name="_token">
</form>
@foreach($posts as $post)
<article class="post">
<h4>{{ $post->user->username }}</h4>
<p class="post-bod">
{{ $post->body }}
</p>
<div class="info">
made on {{ date('F d, Y', strtotime($post->created_at)) }}
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>
App.js
$("#add").click(function() {
$.ajax({
type: 'post',
url: '/addItem',
data: {
'_token': $('textarea[name=_token]').val(),
'name': $('textarea[name=body]').val()
},
success: function(data) {
if ((data.errors)) {
$('.error').removeClass('hidden');
$('.error').text(data.errors.name);
} else {
$('.error').remove();
$('#table').append("<tr class='item" + data.id + "'><td>" + data.id + "</td><td>" + data.name + "</td><td><button class='edit-modal btn btn-info' data-id='" + data.id + "' data-name='" + data.name + "'><span class='glyphicon glyphicon-edit'></span> Edit</button> <button class='delete-modal btn btn-danger' data-id='" + data.id + "' data-name='" + data.name + "'><span class='glyphicon glyphicon-trash'></span> Delete</button></td></tr>");
}
},
});
$('#body').val('');
});
PostController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
use App\User;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests;
use Validator;
use Response;
use Illuminate\Support\Facades\Input;
class PostController extends Controller
{
public function getDashboard()
{
$posts = Post::orderBy('created_at', 'desc')->get();
$cookie = cookie('saw-dashboard', true, 15);
$users = User::all();
$user = new User();
// return view('dashboard', array('user'=> Auth::user()), compact('users'))->withCookie($cookie);
return view('dashboard',array('user'=> Auth::user(), 'posts' => $posts, compact('users')))->withCookie($cookie);
}
// public function postCreatePost(Request $request)
// {
// $this->validate($request,[
// 'body' => 'required|max:1000'
// ]);
// $post = new Post();
// $post->body = $request['body'];
// $message = 'There was an error';
// if($request->user()->posts()->save($post)){
// $message = 'Post Successfully Created';
// }
// return redirect()->route('dashboard');
// }
public function postCreatePost(Request $request) {
$rules = array (
'body' => 'required|max:1000'
);
$validator = Validator::make ( Input::all (), $rules );
if ($validator->fails ())
return Response::json ( array (
'errors' => $validator->getMessageBag ()->toArray ()
) );
else {
$post = new Post();
$post->body = $request->body;
$post->save();
return response ()->json( $post );
}
}
}
路線是
Route::post ( '/addItem', 'PostController@postCreatePost' );
您正在訪問請求中的body
,而實際上它是您要發送的name
如下更改控制器代碼
public function postCreatePost(Request $request) {
$rules = array(
'name' => 'required|max:1000'
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
return Response::json (array(
'errors' => $validator->getMessageBag()->toArray()
));
} else {
$post = new Post();
$post->body = $request->body;
$post->save();
return response()->json( $post );
}
}
您需要向您的單擊添加preventDefault
功能或更改添加的按鈕類型
因此,在您的app.js中,進行如下更改
$("#add").click(function (e) {
e.preventDefault();
//rest of the code
});
要么
改變這個
<button type="submit" id="add" class="mybtn2">Create Post</button>
至
<button type="button" id="add" class="mybtn2">Create Post</button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.