表单的子模式在没有ajax的情况下正常工作,但是我需要在没有刷新的情况下发送表单(通过ajax),然后,将这两个输入首先插入到数据库中,并将新行与表单中的数据一起插入。 这是我的尝试。表单提交没有刷新,它插入数据库,但它没有显示在我想要的表格后,我找不到完整的例子,所以请帮助我。并在建议中表示感谢。
控制器中的功能:
public function newClient(){
if(Request::ajax()){
$nume=Input::get('add_nume');
$tel=Input::get('add_telefon');
$client=new Clienti;
$client->nume=$nume;
$client->telefon=$tel;
$client->save();
}
}
路线:
Route::get('/clienti/', 'HomeController@showClienti');
Route::post('/adaugaclient', 'HomeController@newClient');
来自视图的脚本:
<script>
$(document).ready(function(){
$('form[data-remote]').on('submit', function(e){
var form = $(this);
var url = form.prop('action');
var clienti=$('#add_clienti');
$.ajax({
url:url,
data:form.serialize(),
type: 'POST',
dataType: "json",
success: function(data){
console.log('data');
//i want to insert in table #listaclienti at the end of it
}
});
return false;
});
});
我在哪里提交提交内容的表单:
<div id='adauga_client'>
<!--
<form method='post' action='adaugaclient' id='add_customer'>
-->
{{Form::open(['data-remote'])}}
<table border='1' id='adaugaclient'>
<thead >
<tr>
<td colspan='2'>Adauga client</td>
</tr>
</thead>
<tbody>
<tr>
<td><label for="add_nume">Nume</label></td>
<td class='right'>
<input name="add_nume" type="text" id="add_nume" value="">
</td>
</tr>
<tr>
<td><label for="add_telefon">Telefon</label></td>
<td class='right'><input name="add_telefon" type="text" id="add_telefon" value=""></td>
</tr>
<tr>
<td colspan='2'><input name="add_btn" type="submit" id='add_client' value="Adauga client" class="add_btn" ></td>
</tr>
</tbody>
</table>
{{Form::close()}}
</div>
我希望插入数据的表格:
<div id='clienti'>
<table border="1" id='listaclienti' align="center">
<thead>
<tr>
<td>Nume</td>
<td>Telefon</td>
<td>Modifica</td>
<td>Sterge</td>
</tr>
</thead>
<tbody>
@foreach($clienti as $client)
<form method="post" action="{{ URL::to('/clienti/modifica/'. $client->id) }}" accept-charset="UTF-8">
<tr>
<td><input type='text' name='nume' id='nume' value='{{$client->nume}}'></td>
<td><input type='text' name='telefon' id='telefon' value='{{$client->telefon}}'></td>
<td><button type='submit'>Modifica</button></td>
<td><a href="clienti/sterge/{{$client->id}}"><button type='button'>Sterge</button></a> </td>
</tr>
</form>
@endforeach
</tbody>
</table>
</div>
答案 0 :(得分:2)
首先,您需要返回刚从控制器保存的数据。你可以使用Laravels Response::json()
。
public function newClient(){
if(Request::ajax()){
// ....
return Response::json($client);
}
}
之后,您应该在成功回调中收到模型的JSON表示data
。那么它只是基本的jQuery。创建表元素并将它们附加到表中。
我不会为您编写所有代码,但这是您可以访问数据的方式。你应该能够自己解决剩下的问题。
$.ajax({
url:url,
data:form.serialize(),
type: 'POST',
dataType: "json",
success: function(data){
console.log(data); // json of your laravel model
console.log('Num: ', data.num); // access property
}
});