【问题标题】:How to append sting array to html div ni ajax.?如何在ajax中将字符串数组附加到html div。?
【发布时间】:2017-04-18 12:48:54
【问题描述】:

这里我有字符串数组的输出。来自 php json。我想将此输出提供给 html div tabcontent,但我不知道该怎么做。这是我的小代码,任何人都可以帮助我。

[{"id":"1","p_name":"g_t1","P_Type":"gp_1","paid_type":"0"},{"id":"2","p_name" :"g_t2","P_Type":"gp_2","paid_type":"1"},{"id":"3","p_name":"g_t3","P_Type":"gp_3","paid_type" :"0"}]

   $("a.tablinks").on('click',function(e){
        e.preventDefault();
        var p_name = $(this).attr('value');
        alert(p_name);
    $.ajax({
            url:"<?php echo base_url(); ?>Gettabdata",
            type: "POST",           
            dataType: 'json',
            data:{Paper_name : p_name},

           success : function(data){                    

                if(data != ""){                 
                    data = JSON.stringify(data);                    
                    console.log(data);
                   alert(data);

                }else{                                  
                    data = JSON.stringify(data);
                    console.log(data);
                   $.each(data, function(k, v) {
                      alert(k + ':' + v+ " 1 working else .!"); 
                   });
                }
           },
           error : function(data){              
                data = JSON.stringify(data);    
                console.log(data);

                   $.each(data, function(k, v) {
                      alert(k + ':' + v + ' error'); 
                   });
           }
        });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="id" class="tabcontent" style="border:none;">

                            <div class="input-group" style="border-color:#3D8EB9; box-shadow: 1px 1px 1px 1px #888888; margin-bottom: 3px; background-color: #fff;">                            

                                <label style="padding:10px 10px;">  Label Name </label>
                                <span class="input-group-btn" style="padding-top:10px;">
                                    <button class="btn btn-info" type="button">Go!</button>
                                </span>     
                            </div>

                        </div>

这是我的ajax

<script>
   $("a.tablinks").on('click',function(e){
        e.preventDefault();
        var p_name = $(this).attr('value');
        alert(p_name);
    $.ajax({
            url:"<?php echo base_url(); ?>Gettabdata",
            type: "POST",           
            dataType: 'json',
            data:{Paper_name : p_name},

           success : function(data){                    

                if(data != ""){                 
                    data = JSON.stringify(data);                    
                    console.log(data);
                   alert(data);

                }else{                                  
                    data = JSON.stringify(data);
                    console.log(data);
                   $.each(data, function(k, v) {
                      alert(k + ':' + v+ " 1 working else .!"); 
                   });
                }
           },
           error : function(data){              
                data = JSON.stringify(data);    
                console.log(data);

                   $.each(data, function(k, v) {
                      alert(k + ':' + v + ' error'); 
                   });
           }
        });
    });
</script>

我想将检索到的字符串数组添加到 html div tabcontent 下面(tabcontent input-group 类将创建 3 次。取决于 id 的数量。)。

<div id="id" class="tabcontent" style="border:none;">

                            <div class="input-group" style="border-color:#3D8EB9; box-shadow: 1px 1px 1px 1px #888888; margin-bottom: 3px; background-color: #fff;">                            

                                <label style="padding:10px 10px;">  Label Name </label>
                                <span class="input-group-btn" style="padding-top:10px;">
                                    <button class="btn btn-info" type="button">Go!</button>
                                </span>     
                            </div>

                        </div>

在 html tabcontent 中添加什么?

标签内容 id 是 P_type, 标签是p_name,

【问题讨论】:

  • 什么是与 JSON 响应映射的 html 元素。我的意思是 HTML 中显示的 JSON 中的“p_name”在哪里?内标?内跨度?在哪里?
  • sting 数组........??
  • @AKA 我对细节进行了编辑。 Tabcontent id 是 P_type,Lable 是 p_name,
  • 是的,你可以在上面看到字符串数组。@Jai

标签: javascript jquery json ajax codeigniter


【解决方案1】:

您需要动态创建 div,因此创建一个函数,将这个 json 数组作为参数并循环到它以使用必要的 idlabel 动态创建 div

首先,你需要在 if 块 data != "" 中指定这个函数

if(data != ""){    
   createDiv(data);  //this function is responsible to create div dynamically      
   data = JSON.stringify(data);                    
   console.log(data);
   alert(data);
}

现在createDiv() 函数是这样的

function createDiv(data){
var dynamicHTML = '';
for(var i=0; i<data.length; i++){
  dynamicHTML += '<div id="'+ data[i].P_Type +'" class="tabcontent" style="border:none;">'+
                        '<div class="input-group" style="border-color:#3D8EB9; box-shadow: 1px 1px 1px 1px #888888; margin-bottom: 3px; background-color: #fff;">'+
                            '<label style="padding:10px 10px;">'+ data[i].p_name +'</label>'+
                            '<span class="input-group-btn" style="padding-top:10px;">'+
                                '<button class="btn btn-info" type="button">Go!</button>'+
                            '</span>'+   
                        '</div>'+
                    '</div>';
}
$("body").append(dynamicHTML);

}

动态创建的 div 会立即附加到 HTML 正文中。您可以指定一个父 div 比如说 &lt;div id='content'&gt;&lt;/div&gt; 并在 createDiv() 函数中更改这行代码 $("body").append(dynamicHTML);$("#content").append(dynamicHTML); 如果您想将其附加到页面中的 div 中。

【讨论】:

  • 这是完美的答案。但你能告诉我如何清除新标签内容的 div 数据。
  • 你可以简单地使用 $("body").html('');恰好在 for 循环之前(或在附加 dynamicHTML 之前的 for 之后)。这将清除选项卡内容的所有先前 HTML。正如我所提到的,使用你的选择器而不是 $("body") 在其中你有这个动态 HTML。
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2012-01-12
  • 1970-01-01
相关资源
最近更新 更多