まず、私はAjaxを使って初心者だと言わなければならない。 ページを更新せずにデータをdbに挿入したいとします。これまでのところ、私はブレードでは、コード... を以下している私は、IDとフォームを持っている:Laravel&Ajax - 爽やかにテーブルにデータを挿入する
{!! Form::open(['url' => 'addFavorites', 'id' => 'ajax']) !!}
<a href="#" id="favorite" class="bookmark"><img align="right" src="{{ asset('/img/icon_add_fav.png')}}"></a>
<input type="hidden" name = "idUser" id="idUser" value="{{Auth::user()->id}}">
<input type="hidden" name = "idArticle" id="idArticle" value="{{$docinfo['attrs']['sid']}}">
<input type="submit" id="test" value="Ok">
{!! Form::close() !!}
そして、私が持っているコントローラで:
public function addFavorites()
{
$idUser = Input::get('idUser');
$idArticle = Input::get('idArticle');
$favorite = new Favorite;
$favorite->idUser = $idUser;
$favorite->idArticle = $idArticle;
$favorite->save();
if ($favorite) {
return response()->json([
'status' => 'success',
'idUser' => $idUser,
'idArticle' => $idArticle]);
} else {
return response()->json([
'status' => 'error']);
}
}
私は挿入するAJAXをしようとしていますデータベース:
$('#ajax').submit(function(event){
event.preventDefault();
$.ajax({
type:"post",
url:"{{ url('addFavorites') }}",
dataType="json",
data:$('#ajax').serialize(),
success: function(data){
alert("Data Save: " + data);
}
error: function(data){
alert("Error")
}
});
});
また、私のweb.php
には、お気に入りを追加するルートがあります。しかし、フォームを提出すると、私はこのようなJSONレスポンスを返します:{"status":"success","idUser":"15","idArticle":"343970"}
...実際にはdbに挿入されますが、ページをリロードしないようにします。アラートボックスを表示するだけです。
これは機能していますが、最初の項目(記事)のみです。私のページにはいくつかの記事が掲載されています(Laravelブレードのforeachを使用しています)。それぞれにお気に入りに追加するボタンがあります。私が言ったように、それは最初の項目(dbとレンダリングアラートボックスに挿入)の記事リストでのみ動作します。 – harunB10
まず、FEを動的に変更してBladeとJavascriptを試して結合するのは良い方法ではありません。私はAjaxを通してあなたのアイテムを取得しようとします。あなたがやっているように使いたい場合は、JavaScriptでリストに新しい行を挿入するコードを見つけようとしてください。 –
Ajaxを使って項目を取得する方法はどういう意味ですか? – harunB10