我有一段时间没遇到这个问题了,我只是无法理解我做错了什么。(我认为这是关于ajax响应的事情)
我正在尝试将图片上传到服务器。我已尝试使用uploadifive插件,现在即时通讯尝试此插件 - > https://github.com/blueimp/jQuery-File-Upload
我的网站包含下拉列表(包含对象),其中选择的选项使用Folowing字段(对象任务)填充div:任务名称,描述和输入字段。这是我用来填充我的div的ajax脚本:
<script type="text/javascript">
function showUzdevumi(str) {
if (str == "") {
document.getElementById("nacDargums_uzdevumi").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("nacDargums_uzdevumi").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","getUzdevumi.php?q="+str,true);
xmlhttp.send();
}
}
</script>
这是getUzdevumi.php文件的一部分,我在其中获取有关每项任务的每个任务和输入字段的信息:
while($row = mysqli_fetch_assoc($result))
{
?> <!--//${"id_uzdevums_".$i} = $row["id_uzdevums"]; !-->
<div class='nacDargums_popup_uzd' id='<?php echo "nacDargums_popup_uzd_".$i."" ?>'>
<p class='nacDargums_popup_uzd_title'><?php echo "".$i.". ".$row['uzd_nosaukums']." : "?></p>
<div class='nacDargums_popup_uzd_desc'><?php "".$row['uzd_apraksts'].""?></div></div>
<div id='<?php echo "uzd_id_hidden_".$i.""?>' style='display: none;'><?php"".$row['id_uzdevums'].""?></div>
<!-- Upload input field !-->
<input class="fileupload" id=<?php echo "fileupload".$i ?> type="file" name="files[]" data-url="jQuery-File-Upload-master/server/php/" multiple>
<?php $i++; ?>
<?php
}
这是我使用jquery插件的地方:
<script>
$(function () {
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
}
} );
});
</script>
问题:当我在那些输入字段中选择文件时,绝对没有任何反应。 如果我在页面中的任何其他位置创建完全相同的输入字段,则它们可以正常工作并上传。问题从AJAX返回的输入字段开始。
一直试图弄清楚这一点很长时间,找不到任何对我有用的东西,我现在很沮丧,所以我希望有人能告诉我我做错了什么可以帮助我。
答案 0 :(得分:1)
您无法为插件初始化时不存在的html分配插件。如果你替换html,你还需要再次初始化插件。
快速的方法是将插件初始化包装到一个函数中,这样你就可以在页面加载时以及更新html时调用该函数
function initializeUploader() {
$('.fileupload').fileupload({
dataType: 'json',
done: function(e, data) {
$.each(data.result.files, function(index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
}
});
}
// page load initialization
$(function() {
initializeUploader();
});
// ajax initialization
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("nacDargums_uzdevumi").innerHTML = xmlhttp.responseText;
initializeUploader();
}
};