Php 在laravel中指定表单
我有数据将附加到下面的blade viewPhp 在laravel中指定表单,php,jquery,ajax,laravel-blade,Php,Jquery,Ajax,Laravel Blade,我有数据将附加到下面的blade view代码中,并且每个都被扭曲成一个表单,问题是发送到后端的数据总是来自第一个表单(不知何故,其他表单数据将被忽略) 我的表单的外观: 从第一个表单发送数据ID=7 从第二个表单发送数据仍然ID 7 代码 我的表单的HTML输出 <tr> <form method="POST" action="http://site.pp/admin/products/15/edit" accept-charset="UTF-8">
代码中,并且每个都被扭曲成一个表单,问题是发送到后端的数据总是来自第一个表单(不知何故,其他表单数据将被忽略)
我的表单的外观:
从第一个表单发送数据ID=7
从第二个表单发送数据仍然ID 7
代码
我的表单的HTML输出
<tr>
<form method="POST" action="http://site.pp/admin/products/15/edit" accept-charset="UTF-8">
</form>
<input name="_token" value="DLrcOa0eOm90e4aaGSYp2uCeiuKtbGCT9fCOUP16" type="hidden">
<input name="product_id" id="product_id" value="15" type="hidden">
<td>Graphic</td>
<td>
<select class="subspecifications form-control tagsselector" id="subspecifications" name="subspecifications[]" multiple="multiple">
<option value="7">Intel 920</option>
</select>
</td>
<td class="text-center">
<button type="button" id="savedynspecto" class="savedynspecto btn btn-md btn-success"><i class="fa fa-check"></i> Save</button>
</td>
</tr>
图解的
英特尔920
拯救
注意:
让我好奇的是为什么我的表单一打开就关闭了
<tr>
<form method="POST" action="http://site.pp/admin/products/15/edit" accept-charset="UTF-8">
</form>
...
...
下面是我的行将如何附加到blade
var my_row = $('<tr>');
var my_html = '{{ Form::open() }}<input name="product_id" id="product_id" type="hidden" value="{{$product->id}}"><td>'+value1.title+'</td>';
my_html += '<td><select class="subspecifications form-control tagsselector" id="subspecifications" name="subspecifications[]" multiple="multiple">'+helpers+'</select></td>';
my_html += '<td class="text-center"><button type="button" id="savedynspecto" class="savedynspecto btn btn-md btn-success"><i class="fa fa-check"></i> Save</button></td>{{Form::close()}}</tr>';
my_row.html(my_html);
$('#addcustomstr').append(my_row);
var my_row=$('');
var my_html='{{Form::open()}}'+value1.title+'';
我的html+=''+助手+'';
my_html+='Save{{{Form::close()}}';
my_row.html(my_html);
$('#addcustomstr').append(我的行);
正如您所看到的,我的{{Form::open()}}
在第一个
之前,{{Form::close()}}
就在第一个
之前,但是为什么在它打开之后就要关闭呢
有什么想法吗?您的HTML格式不正确。您有一个input
元素作为tr
元素的直接后代。仅允许td
和th
作为tr
元素的直接后代。将隐藏的输入字段放入td
标记中,如下所示:
var my_html = '{{ Form::open() }}<td><input name="product_id" id="product_id" type="hidden" value="{{$product->id}}">'+value1.title+'</td>';
var my_html='{{Form::open()}}'+value1.title+';
并检查是否有效
编辑:当然,这也是格式错误的HTML,因为form
元素也不允许在tr
元素中使用。将整个表格包装在表单标签中。
感谢所有人的帮助,因为我被警告在tr
td
中不允许使用表单,我决定在我的表外使用行
,并将我的数据追加到那里,这样我就可以毫无问题地运行我的表单了。什么时候是$('#addcustomstr')。追加(我的行)代码>调用的代码?乍一看,您使用的是{{$product->id}}
,从服务器加载时,假设为1。如果调用$('#addcustomstr').append(我的行)
多次,每个
都会有相同的值1。@Timliews这是正确的,因为每个表单都有产品id,在本例中,所有产品id都是相同的(我正在编辑页面中工作)。我现在明白了。关于无效HTML,您实际上可以删除
元素,向每个
添加一个类,如ssWrapper
,并将其作为中的目标。savedynspector
点击功能;因为您使用的是AJAX,所以实际上不需要表单元素。@TimLewis好的,您能给我一个针对该类的示例吗?就是说
;我说。另外,你可以在你的JS中使用\u token:“{csrf\u token()}”
(假设你在.blade.php
文件中),它不起作用bro(如果我把我的tr放在表单中)它停止了我的数据被追加。问题是,你不能将表单作为表或表行的直接后代。您要么将整个表放在表单中,要么将表单放在表单元格中,要么不使用表。检查此问题的答案:如果我添加另一个表体并将tr与我的表单一起扭曲到该tbody中会怎样?不能用表单包装表行元素,因为表单元素不能是表元素的直接后代。在这种情况下,我应该只使用引导的行类,而不能使用表右键?
var my_row = $('<tr>');
var my_html = '{{ Form::open() }}<input name="product_id" id="product_id" type="hidden" value="{{$product->id}}"><td>'+value1.title+'</td>';
my_html += '<td><select class="subspecifications form-control tagsselector" id="subspecifications" name="subspecifications[]" multiple="multiple">'+helpers+'</select></td>';
my_html += '<td class="text-center"><button type="button" id="savedynspecto" class="savedynspecto btn btn-md btn-success"><i class="fa fa-check"></i> Save</button></td>{{Form::close()}}</tr>';
my_row.html(my_html);
$('#addcustomstr').append(my_row);
var my_html = '{{ Form::open() }}<td><input name="product_id" id="product_id" type="hidden" value="{{$product->id}}">'+value1.title+'</td>';