使用AJAX向Laravel中的数据库发送数据时遇到问题

时间:2019-03-27 19:10:58

标签: jquery ajax laravel submit

我一直在研究如何使用Laravel发送AJAX请求,却一无所获。当我删除我的onsubmit / click函数并说“ alert('test')”时,AJAX似乎起作用,但是在单击按钮时它会弹出。但是,当我单击“ Confirm”按钮时,我的路线并未被请求来自我的textarea的输入,因此,当我检查MYSQL数据库时不会进行更新。

我确保在表单和AJAX上都包含CSRF标头,并将按钮类型设置为“按钮”,以防止提交实际的表单。有人可以向我指出正确的方向,而不管是我的问题的原因是我的AJAX,控制器还是Web路由代码。在过去的两天里,我一直在努力寻找解决办法,但没有成功。票证和回复之间也存在一对多的关系,所以这就是为什么我要访问给定的票证回复并进行相应更新。我也已经尝试过不将其作为JSON发送,但仍然无法正常工作。

这是我的表单标记:

<div class="modal-body">
<form id="edit-reply">
@csrf
@method('PATCH')
<div class="form-group">
<textarea class="form-control testing" id="edit-box" rows="12"name="edit-message"                                                              placeholder="{{$r->message}}" required></textarea>
</div>
<button type="button" class="btn btn-light btn-outline-dark" id="edit-button" data-dismiss="modal"style="font-weight: bold;">Confirm</button>
</form>

AJAX标记

<script type="text/javascript">
jQuery(document).ready(function () {
$('#edit-button').on('submit', function (e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "{{ route('ticket.create', $slug->slug) }}",
type: 'PATCH',
data: {
message: jQuery('#edit-box').val()
},
success: function (result) {
jQuery('.alert').show();
jQuery('.alert').html(result.success);
}
});
});
});
</script>

TicketController

public function editReply(Ticket $ticket)
    {
        $t = $ticket->reply()->update(request(['edit_message']));
        return response()->json($t);
}

路线代码

Route::patch('ticket/{ticket}', 'TicketController@editReply')->name('ticket.edit-reply');

1 个答案:

答案 0 :(得分:0)

尝试像这样传递标头可能是它的工作

$.ajaxSetup({ 
   headers:{ 
      "Authorization": "Bearer " + $('meta[name="csrf-token"]').attr('content') 
   } 
});