使用Ajax提交表单

时间:2016-09-27 10:35:22

标签: javascript php ajax laravel laravel-5.1

首先,这是我的代码:

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提交和正常提交。

2 个答案:

答案 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
  },
});

您的控制器将捕获来自请求的数据,如您所知。