我正在尝试使用laravel创建一个ajax表单。显示是一个带有名称的表,名称旁边是用于执行操作的表单所包含的按钮。
这是html:
<div style="margin-top: 100px;">
<h2>Character settings</h2>
<table class="table table-striped table-bordered table-hover">
<tr>
<th>Name</th>
<th>Map</th>
<th>Move</th>
</tr>
@foreach($chars as $char)
<tr>
<td>{{$char['name']}}</td>
<td>{{$char['map']}}</td>
<td>
{{Form::open(array('action' => 'UsersController@move', 'id' => 'mover'))}}
<input type="hidden" name="charID" id="charID" value="{{$char['id']}}" />
<button type="submit" class="btn btn-small btn-info">Move</button>
{{Form::close()}}
</td>
</tr>
@endforeach
</table>
这是javascript ajax处理:
$('#mover').on('submit', function(e){
e.preventDefault();
var $form = $( this ),
method = $form.attr( "method" );
$.ajax({
url: "{{action('UsersController@move')}}",
dataType: "json",
data: $('#charID').val(),
type: method,
success: function (response) {
console.log(reponse['test']);
}
});
});
这是控制器:
public function move() {
return Response::json(array('test' => 'test'));
exit();
}
表格如下: TRY_CONVERT (Transact-SQL)
如果我单击Sambte的第一个按钮,它可以工作,我在控制台中看到“test”。但是,当我点击第二个链接时,它不会发送为ajax并将我发送到一个新页面,其中json对象作为该页面的内容,所以我在新页面中看到{“test”:“test”}它给我带来了到。
我无法弄清楚出了什么问题。希望它在某个地方出现小错误。
谢谢
答案 0 :(得分:0)
ID's
是唯一的,您需要在表单上使用class
。
'class' => 'mover'
然后只需使用class
代替选择器中的ID
$('.mover')
旁注,charID
也需要做同样的事情,这就是我要解决的问题:
class="charID"
然后,在你的提交处理程序中:
data: $form.find('.charID').val()
答案 1 :(得分:0)
$(document).on('submit','.mover', function(e){
e.preventDefault();
var $form = $( this ),
method = $form.attr( "method" );
$.ajax({
url: "{{action('UsersController@move')}}",
dataType: "json",
data: $(this).serialize(),
type: method,
success: function (response) {
console.log(reponse['test']);
}
});
});
将id = mover更改为class = mover