【问题标题】:How to append javascript content in html如何在html中附加javascript内容
【发布时间】:2020-05-08 13:16:23
【问题描述】:

我已经在 ajax 中工作,并且附加内容无法像我的 html 字段那样工作

<div class="input-field hidemodals">
      <select class="model_select"   onchange="showfunction()"  id="modal_number">
              <option value="" disabled selected> Select Model</option>
      </select>
</div>

在javascript中我会做的

$.ajax({
    url:"https://api.wheel-size.com/***/***/",
    method: 'GET',
    data: {user_key: '*************', make:valueSelectedmakes , year:select_year },
    dataType:"json",
    cache: false,
    success: function(datases) {
var obj = JSON.stringify(datases); 
        if(datases){
                var len = datases.length;
                var txt = "";
                  if(len > 0){
            for(var i=0;i<len;i++){
                        if(datases[i].name){
                             $('#modal_number').append("<option value="+datases[i].slug+">"+datases[i].name+"</option>");
                        }
                    }
                }
            }    
         }
});

我将控制台追加数据显示在控制台中,但结果没有显示在 html 部分,为什么?

【问题讨论】:

  • 控制台是否出现错误?
  • 我希望这能奏效。 (这不是我的做法,尤其是因为您想防御datases[i].name 中的 HTML 字符,但我希望它能够工作。)请用 minimal reproducible example 更新您的问题,以展示问题,理想情况下是可运行 一个使用堆栈片段([&lt;&gt;] 工具栏按钮;here's how to do one)。您可以使用setTimeout 来模拟ajax 调用。
  • @evolutionxbox 没有错误显示

标签: javascript html ajax append


【解决方案1】:

我用虚拟数据尝试了你的代码,它工作正常。 您是否收到以下格式的回复?

var data = [{name:"test", slug:"test"}, {name:"test1", slug: "test1"}]

您能否发布您在 datases 对象中获得的响应快照?或者尝试下面的代码并检查它是否有效。

$.ajax({
    url:"https://api.wheel-size.com/***/***/",
    method: 'GET',
    data: {user_key: '*************', make:valueSelectedmakes , year:select_year },
    dataType:"json",
    cache: false,
    success: function(datases) {
var obj = JSON.stringify(datases); 
        if(datases){
                var data = [{name:"test", slug:"test"}, {name:"test1", slug: "test1"}]
                var len = data.length;

                  if(len > 0){
            for(var i=0;i<len;i++){
                        if(data[i].name){
                   var modalElement = document.getElementById("modal_number");
   var option = document.createElement("option");
 option.text = data[i].name;
 option.value = data[i].slug;
  modalElement.add(option);


                        }
                    }
                }
            }    
         }
}); 

【讨论】:

  • console.log(datases; 我得到的结果像 (15) [{...}, {...}, {...}, {...}, {...}, {...}, {...}, {…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}] 0:{slug:“1 系列”,名称:“1 系列”, name_en:“1 系列”} 1:{slug:“3 系列”,名称:“3 系列”,name_en:“3 系列”} 2:{slug:“5 系列”,名称:“5 系列”, name_en:“5 系列”}.....14:{slug:“z4”,名称:“Z4”,name_en:“Z4”} 长度:15 proto:数组(0)。
  • 响应似乎也没有问题...您是否尝试过上面的代码?
  • 只是为了确保响应没有问题,您可以尝试使用我上面使用的虚拟数据。保持所有代码不变,就在成功内部使用虚拟对象数据。并将相同的内容附加到下拉列表中。幸运的是,如果它有效,那么我们将纠正您的原始回复并使其有效。
  • 我已经修改了我的答案,只是运行它以使用虚拟数据进行测试
  • 我尝试使用虚拟数据没有变化也没有错误,你看到我的 html 内容有三个选择框这是最后一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2019-05-04
  • 1970-01-01
相关资源
最近更新 更多