我需要在不刷新页面的情况下将数据发送到数据库。
Home Blade:
<form class="chat" id="message" action="#" method="post">
<input type="hidden" name="_token" id="_token" value="{{ csrf_token() }}">
<li>
<div class="panel-footer">
<div class="input-group">
<input type="text" name="message" class="" placeholder="Type your message here..." />
<span class="input-group-btn">
<button type="submit" class=" btn-success btn-sm searchButton" id="save" >
Send
</button>
</span>
</div>
</div>
</li>
</form>
控制器:
public function message(Request $data)
{
$ins = $data->all();
unset($ins['_token']);
$store = DB::table("chatbox")->insert([$ins]);
return Redirect('Users/home')->with('message',"success");
}
Ajax:
<script>
$(document).on("click", ".save", function() {
$.ajax({
type: "post",
url: '/Users/message',
data: $(".message").serialize(),
success: function(store) {
},
error: function() {
}
});
});
</script>
目前,当我发送数据时,它会自动刷新整个页面,但只需要刷新特定的表单。
答案 0 :(得分:2)
您应该将按钮的类型从submit
更改为button
,如:
<button type="button" class=" btn-success btn-sm searchButton" id="save" >end</button>
或使用submit
阻止默认操作(e.preventDefault();
),如:
$(document).on("click",".save",function(){
e.preventDefault(); //Prevent page from submiting
...
...
});
注意:另请注意,您没有包含save
类但ID为save
的按钮,因此事件处理程序应如下所示:
$(document).on("click", "#save", function(){
________________________^
答案 1 :(得分:2)
您必须在javascript / jquery表单submit
功能中处理函数,并使用e.preventDefault()
停止HTML以提交表单。
请尝试以下代码类型中的ajax代码。
$('#message').submit(function(e) {
e.preventDefault();
//your ajax funtion here
});
您可以在成功功能中重置/刷新表单
$("#message").trigger("reset");
答案 2 :(得分:1)
您需要阻止默认表单提交,而是使用脚本
$(document).on("click", "#save", function(e) {
e.preventDefault(); // Prevent Default form Submission
$.ajax({
type:"post",
url: '/Users/message',
data: $("#message").serialize(),
success:function(store) {
location.href = store;
},
error:function() {
}
});
});
而不是返回重定向,从控制器返回url并让脚本处理重定向
public function message(Request $data)
{
$ins = $data->all();
unset($ins['_token']);
$store = DB::table("chatbox")->insert([$ins]);
session()->flash('message', 'success');
return url('Users/home');
}
答案 3 :(得分:0)
删除return Redirect('Users/home')->with('message',"success");
并返回一个类似
return ['message' => 'success'];