Javascript 为什么.html()方法不在元素中加载数据? $.get(“progress.txt”,null,函数(数据){ 如果(数据_aj.substr(0,14)==“”){ $(“#list”).html(“”+data_aj+””); clearTimeout(timeOutId); }否则{ $(“#列表”).html(数据#aj); } });

Javascript 为什么.html()方法不在元素中加载数据? $.get(“progress.txt”,null,函数(数据){ 如果(数据_aj.substr(0,14)==“”){ $(“#list”).html(“”+data_aj+””); clearTimeout(timeOutId); }否则{ $(“#列表”).html(数据#aj); } });,javascript,jquery,ajax,Javascript,Jquery,Ajax,我真的什么都试过了,但不知道出了什么问题。如果我使用警报(数据_aj)它提供了所需的输出,工作正常,但是HTML(数据)没有加载到元素#listusing.HTML()。有人能告诉我为什么吗?您是否尝试过将代码放入一个文档中,因为您的警报会发出,但如果您的dom未加载,则无法附加到它。对于非html的列表也使用.append() $.get("progress.txt", null, function(data_aj){ if(data_aj.substr(0,14) == "&

我真的什么都试过了,但不知道出了什么问题。如果我使用
警报(数据_aj)
它提供了所需的输出,工作正常,但是HTML(数据)没有加载到
元素
#list
using.HTML()。有人能告诉我为什么吗?

您是否尝试过将代码放入一个文档中,因为您的警报会发出,但如果您的dom未加载,则无法附加到它。对于非html的列表也使用.append()

$.get("progress.txt", null, function(data_aj){
        if(data_aj.substr(0,14) == "<!-- MSG:: -->"){
            $("#list").html("<li>"+data_aj+"</li>");
            window.clearTimeout(timeOutId);
        }else{
            $("#list").html(data_aj);
        }
    });
$(文档).ready(函数(){
$.get(“progress.txt”,null,函数(data_aj){
如果(数据_aj.substr(0,14)==“”){
$(“#列表”)。追加(“
  • ”+数据“
  • ”); clearTimeout(timeOutId); }否则{ $(“#列表”)。追加(数据); } }); });
    听好

    是英语的简写

    所以当你这么做的时候

    $(document).ready(function() {
    
    $.get("progress.txt", null, function(data_aj){
            if(data_aj.substr(0,14) == "<!-- MSG:: -->"){
                $("#list").append("<li>"+data_aj+"</li>");
                window.clearTimeout(timeOutId);
            }else{
                $("#list").append(data_aj);
            }
        });
    });
    
    你真的这么做了

    $.get(uri, function(data){
        //Your functionality
    });
    
    默认情况下,这将以HTML形式返回页面。或者,默认情况下,它首先检查页面上的MIME类型,如果没有找到,则返回HTML。当您请求一个.txt文件时,它会将其解释为一个简单的文本文件。如果您想告诉它您想要返回什么(HTML),可以在服务器页面上的MIME类型中执行,也可以使用

    因此,解决这一问题的简单方法是:

    $.ajax({
        url: uri,
        type: "GET",
        success: function(data) {
            //Your functionality
        }
    });
    
    这与执行以下操作相同:

    $.get(uri, function(data) {
        //Your functionality
    },
    "html");
    
    另外,使用
    html()
    也不是一个好主意,因为每次要添加额外的新节点时,都要替换
    ul
    元素中现有的html

    尝试利用:

    $.ajax({
        url: uri,
        type: "GET",
        dataType: "HTML",
        success: function(data) {
            //Your functionality
        }
    });
    

    否则,如果您的HTML尚未完全加载,那么您的列表可能还不存在,因此JQuery无法将一些值放入不存在的HTML。

    数据的值是多少?能否包含一段HTML代码?你确定
    #list
    是正确的id吗?你的html看起来怎么样?@Felix:只是一些html类型的“…”@AndrewJackman:是的,我确定那是正确的id!嗯,事实并非如此。我的代码在JS函数中。当用户单击某个内容时会触发该函数。Cool还可以尝试第二点,使用append not html作为列表这是胡说八道
    html()
    将在
    ul
    元素上工作。请求返回的mime类型将是
    text/plain
    ,因为它来自txt文件-这就是问题所在
    getJSON
    将导致解析错误,我不知道您为什么建议使用它。我很高兴你用我的更正编辑了你的原始答案。@PhilParsons我不知道你为什么要骗我。我之所以提出getJSON(),是因为它在其他情况下很有用,例如当您需要获取返回的html正文的一部分时。如果你花时间阅读我的答案,这显然不是解决他的问题的方法。你的措辞表明,请求HTML时使用
    getJSON
    是合适的。如果这“显然不是解决这个问题的办法”,那么为什么要提出这个建议呢?
    $('#list').append('<li>' + data_aj + '</li>');
    
    $(document).ready(function() {
       //Your code...
    });