JQuery不会处理ajax返回的内容

时间:2016-04-16 14:12:32

标签: javascript php jquery ajax

我有一段时间没遇到这个问题了,我只是无法理解我做错了什么。(我认为这是关于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返回的输入字段开始。

一直试图弄清楚这一点很长时间,找不到任何对我有用的东西,我现在很沮丧,所以我希望有人能告诉我我做错了什么可以帮助我。

1 个答案:

答案 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();
  }
};