gpt4 book ai didi

javascript - JQuery 不适用于 ajax 返回的内容

转载 作者:行者123 更新时间:2023-11-27 23:05:09 24 4
gpt4 key购买 nike

我遇到这个问题已经有一段时间了,我只是无法理解我做错了什么。(我认为这与 ajax 响应有关)

我正在尝试将图像上传到服务器。我已经尝试过 uploadive 插件,现在我正在尝试这个插件 --> https://github.com/blueimp/jQuery-File-Upload

我的网站包含下拉列表(包含对象),所选选项将使用以下字段(对象任务)填充 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 返回的输入字段。

长期以来一直试图解决这个问题,找不到任何对我有用的东西,现在我很沮丧,所以我希望任何人都可以帮助我,告诉我我做错了什么。

最佳答案

你不能将插件分配给插件初始化时不存在的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();
}
};

关于javascript - JQuery 不适用于 ajax 返回的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com