2016-09-27 6 views
0

Во-первых, вот мой код:Отправить форму с помощью Ajax

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 (и некоторым вставкам баз данных) он перенаправляет t o вид представления.

Теперь я хочу добавить вторую кнопку, которая отправляет форму через Ajax.

Вопрос: Есть ли способ использовать ту же функцию store? Мне нужно, чтобы он мог обрабатывать как ajax submit, так и обычный submit.

+0

Возможно, вы захотите использовать форму «Post» в действии, а затем отправить данные форм после сериализации через ajax. –

ответ

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

Ваш контроллер будет ловить данные, поступающие из запроса, как вы уже делаете.

Смежные вопросы