首先,这是我的代码:
routes.php文件
$router->resource('vips','formController');
formController.php (我只发布相关功能)
public function store(CreateVipRequest $request, Vip $vip, Pool $pool, Url $url)
{
$new_vip = $vip->create($request->except(['srv_hostname', 'srv_ip', 'srv_port','url']));
$pool->fill($request->only(['srv_hostname', 'srv_ip', 'srv_port']));
$url->fill($request->only(['url']));
/* Some more inserts on the database...*/
return redirect()->route('vips.show', [DB::table('vips')->max('id')]);
}
我的代码提交了表单,在一些json请求远程Api(和一些数据库插入)后,它重定向到show视图。
现在我想添加第二个按钮,通过Ajax提交表单。
问题:有没有办法使用相同的功能store
?我需要它能够处理ajax提交和正常提交。
答案 0 :(得分:0)
使用ajax提交表单
$("#form-name").submit(function(ev){
ev.preventDefault();
var formURL = $(this).attr("action");
var postData = $(this).serializeArray();
$.ajax({
url: formURL,
type: 'POST',
data: postData,
success: function(data, textStatus, jqXHR){
location.reload();
},
error: function(jqXHR, textStatus, errorThrown){
var errResponse = JSON.parse(jqXHR.responseText);
},
});
});
答案 1 :(得分:0)
是的,你可以。
在你的javascript中你可以做这样的事情(假设你正在使用jquery):
// if you're using a form
var data = $('form').serialize();
// if data comes from elsewhere
var data = {foo: 'bar', ...};
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function (data) {
// Do something if everything went fine
},
error: function (jqXHR, textStatus, errorThrown) {
// Do something if something went wrong
},
});
您的控制器将捕获来自请求的数据,如您所知。