从json解析json中的值数据时从输入字段获取值?

时间:2018-02-28 14:50:13

标签: javascript codeigniter

我的javascript名称为something.js。在js文件中我有这样的功能

$(document).ready(function() {
tampilInterval();       
$('#mydata').html();
function tampilInterval() {
    $.ajax({
        type  : 'ajax',
        url:$("#baseurl").val(),
        dataType:"json",
        method:"post",
        success : function(data){
            var html = '';
            var i;
            html += '<tr>'+
                '<td>'+data[0].key+'</td>'+
                '<td><input type="text" class="form-control" id="int0" name="int0" value="'+data[0].value+'"></td>'+
                '</tr><tr>'+
                '<td>'+data[1].key+'</td>'+
                '<td><input type="text" class="form-control" id="int1" name="int1" value="'+data[1].value+'"></td>'+
                '</tr>';
                $('#show_data').html(html);
        }
    });
};

在我的情况下,我想使用来自id的值 - &gt; int0和int1到同一文件中的另一个函数。

我有代码来获取并检查这样的值

var int0 = document.getElementsByName('int0').value;
var int1 = document.getElementById('int1');

但它说&#39; null&#39;。 如何获得这个价值?或者如何将变量int0int1变成已经有价值的全局变量?谢谢

5 个答案:

答案 0 :(得分:1)

如果您使用document.getElementsByName(),它将返回NodeList,这有点像数组。它没有直接value。您需要在该数组上获取该值的第零个元素:

var int0 = document.getElementsByName('int0')[0].value;

请注意[0]

答案 1 :(得分:1)

哦,当然。执行函数tampilInterval时,它仅设置将在ajax-request完成时执行的侦听器success。 如果您当前正在检查int0int1 DOM节点的值,则监听器尚未工作且未分配。

答案 2 :(得分:0)

我认为您可以全局存储变量并稍后获取。

$(document).ready(function() {

var value1, value2;

tampilInterval();       
$('#mydata').html();
function tampilInterval() {
    $.ajax({
        type  : 'ajax',
        url:$("#baseurl").val(),
        dataType:"json",
        method:"post",
        success : function(data){
            value1 = data[0].value; value2 = data[1].value;
            var html = '';
            var i;
            html += '<tr>'+
                '<td>'+data[0].key+'</td>'+
                '<td><input type="text" class="form-control" id="int0" name="int0" value="'+data[0].value+'"></td>'+
                '</tr><tr>'+
                '<td>'+data[1].key+'</td>'+
                '<td><input type="text" class="form-control" id="int1" name="int1" value="'+data[1].value+'"></td>'+
                '</tr>';
                $('#show_data').html(html);
        }
    });
};

答案 3 :(得分:0)

函数getElementsByClassName返回NodeList,因此您需要使用索引获取这些元素。

var int0 = document.getElementsByName('int0')[0].value;

更好的方法是使用函数querySelector,这样您就不必担心索引了:

var int0 = document.querySelector('[name="int0"]').value;

资源

  • document.querySelector()
      

    返回文档中与指定选择器或选择器组匹配的第一个Element,如果未找到匹配项,则返回null。

答案 4 :(得分:0)

尝试使用

$('#int0').val();
$('#int1').val();

您使用jQuery调用ajax,但下面的代码使用javascript

如果要在加载html后添加数据,请使用$(window).load()而不是$(document).ready()

Difference between $(window).load() and $(document).ready() functions

注意:使用&#34; Class&#34;而不是&#34; Id&#34;在循环中。 ID对于第一个标记

是唯一的