我试图将数组值设置为名为attachments[]
我的数组存储在js变量attachArray
我试过的是,
$('[name="attachments"]').attr('value', attachArray);
或
$('[name="attachments"]').val(attachArray);
但是像这样在控制器中获得空attachments
,
array(1) { ["attachments"]=> array(1) { [0]=> string(0) "" } }
我做错了什么?
修改
<div class="col-md-4">
<div class="form-group ticket-align">
<label>Attachment</label>
<label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal">
Browse…
<input type="hidden" name="attachments[]">
</label>
<span id="fileList"></span>
<span class="error" id="error-atachments" style='display: none;'></span>
</div>
</div>
答案 0 :(得分:3)
因为它是一个隐藏的输入,所以
或者: -
$('[name=attachments]').val(attachArray);
OR
$('input:hidden[name=attachments]').val(attachArray);
会工作。
注意: - 使用反斜杠( 使用\\
转义内部括号(无空格) )。
答案 1 :(得分:2)
您的输入字段名称为attachments[]
,请尝试使用
$('[name="attachments[]"]').val(attachArray);
答案 2 :(得分:2)
据我所知,您希望将JavaScript数组的内容传播到多个字段,另一方面PHP将其解释为数组。
我将输入从hidden
更改为text
只是为了使其更加清晰,因此您可以看到值的外观。不要忘记在代码中撤消此操作。
const attachArray = [
'val1',
'val2',
];
const attachments = $('[name="attachments[]"]');
for ( let i = 0; i < attachments.length; i += 1 ) {
$( attachments[ i ] ).val( attachArray[ i ] );
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-4">
<div class="form-group ticket-align">
<label>Attachment</label>
<label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal">
Browse… <br>
<input type="text" name="attachments[]"><br>
<input type="text" name="attachments[]">
</label>
<span id="fileList"></span>
<span class="error" id="error-atachments" style='display: none;'></span>
</div>
</div>
但这需要做很多代码。我认为将数组作为JSON发送并使用PHP json_decode
将其转换回数组可能更容易,如下所示:
const attachArray = [
'val1',
'val2',
];
$('[name="attachments"]').val( JSON.stringify( attachArray ) );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-4">
<div class="form-group ticket-align">
<label>Attachment</label>
<label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal">
Browse… <br>
<input type="text" name="attachments">
</label>
<span id="fileList"></span>
<span class="error" id="error-atachments" style='display: none;'></span>
</div>
</div>
做一些像
这样的事情$attachments = json_decode( $_POST[ 'attachments' ] );
答案 3 :(得分:0)
提及隐藏字段的ID,您要通过表单发送数组,因此请使用方括号声明隐藏字段的名称,如下所示。
<input type="text" name="attachments[]" id="attachments">
并使用jquery val()
方法绑定您的数组。
$('#attachments').val(attachArray);
供以后参考:-)