我试了几个小时但找不到任何解决方案。
简化我的代码如下所示。
PHP:
foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row)
{
...
<input type="text" class="_title" >
Search: <input type="file" class="_file" >
<input type='button' class="_submit" value='Save' >
...
}
?>
JS:
$(document).ready(function(){
$("._submit").click(function(){
?? var _title = document.getElementById('_title'),
?? _file = document.getElementById('_file');
var data = new FormData();
data.append('SelectedFile', _file.files[0]);
data.append('title', _title.value);
...
</script>
我不知道如何按班级获取数据。它通过ID工作,但我不能使用ID,因为foreach循环会有几个相同的ID。
尝试过这一点也没有成功:
var _file = document.getElementsByClassName('_file');
我希望有人可以帮助我。 米施
答案 0 :(得分:3)
您可以将元素包装在容器div中,如
<?php
foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row)
{
...
<div class='container'>
<input type="text" class="_title" >
Search: <input type="file" class="_file" >
<input type='button' class="_submit" value='Save' >
</div>
}
?>
然后使用.closest()
遍历容器。在病房之后,您只需使用find
来获取所需的元素。
<script>
$(document).ready(function(){
$("._submit").click(function(){
var container = $(this).closest('.container');
var _title = container.find('._title'),
var _file = container.find('._file')[0];
var data = new FormData();
data.append('SelectedFile', _file.files[0]);
data.append('title', _title.value);
//Rest of your code
});
});
</script>
答案 1 :(得分:1)
由于您使用的是jquery,因此您可以使用 .each() 函数和类选择器$('.class').each(function(){
var input_value = $(this).val();
})
来遍历具有相同类的所有元素:
_title
由于您有多个字段_file
和Formdata()
,因此您应使用数组符号[]
将其作为数组传递给var data = new FormData();
$('._file').each(function(){
var _file = $(this).val();
data.append('SelectedFile[]', _file.files[0]);
})
$('._title').each(function(){
var _title = $(this).val();
data.append('title[]', _title);
})
:
class Venue{
//Getter and Setter
}
class User{
private String name;
@DBRef
private Venue venue;
//Getter and Setter
}
class Event {
@DBRef
private Venue venue;
//Getter and Setter
}
希望这有帮助。
答案 2 :(得分:0)
你还可以做一些与@satpal
相同的事情将代码包装在div元素中。
<强> PHP:强>
foreach($db->query("SELECT id FROM news ORDER BY position ASC") as $row)
{
...
<div> <!-- wrapper -->
<input type="text" class="_title" >
Search: <input type="file" class="_file" >
<input type='button' class="_submit" value='Save' >
</div>
}
?>
然后尝试下面的代码。
<强> JS:强>
$("._submit").click(function(){
var title = $(this).siblings('._title').val();
var file = $(this).siblings('._file')[0].files[0];
var data = new FormData();
data.append('SelectedFile',file);
data.append('title', title);
});
上面的代码使用了.siblings()
函数