使用Ajax插入数据
答
我只是假设你正在使用jQuery,如果你在谈论AJAX。这很简单。您的laravel路线听取“发布”,“获取”,“补丁”,“删除”方法。这些
一切都可以用一个Ajax请求创建 - 例如:
$.ajax({
method: "POST",
url: "/posts",
data: { title: "Hello World", text: "..." }
})
.done(function(post) {
// assuming you return the post
alert(post.title + " created");
});
现在你用ajax,你不会想要一个视图返回Ajax调用。您有不同的选择在这里(创建一个新的路线,辅助功能等),我会给出最简单的例子
控制器功能:
public function store(Request $request) {
$post = App\Post::create($request->all());
if($request->ajax()) {
return $post;
} else {
return redirect('/posts');
}
}
现在你控制器将返回的Ajax调用数据,并且将您重定向在没有Ajax的情况下进行默认调用。
最后你要记住最后一件事。如果您应用了网络中间件(默认情况下已完成),则需要处理csrf令牌。最简单的方法来处理这个问题是(做所有你的电话前等)加入了元标记您的HTML头
,然后添加这个来配置你的Ajax
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
这会在您的头部添加有效的csrf标记给每个ajax调用,并确保您不会遇到标记不匹配异常。
事情要记住: - 如果你留很长的上一个页面符号可能到期(laravel咖啡因会帮助这里) - 你需要处理验证了AJAX调用
答
如果你试图提交通过Javascript确保防止表格默认动作e.preventDefault()
。此代码阻止以正常方式提交表单。只需添加以下代码来包装您的AJAX呼叫:
$('#form-id').submit(function(e){
e.preventDefault();
$.ajax({...});
});
您可以将您迄今为止所做的相关代码放到哪里? –