在Array JQUERY中没有值

时间:2018-02-24 08:13:56

标签: javascript php jquery ajax

我将问我为什么我的数组在我添加时没有值。这是我的jquery代码在数组JQUERY中添加值。

// ----我在数组

中设置了值
var arr= [];
$.ajax({
    type: 'POST',
    url: base_url+'joborder/select_account_details/',
    beforeSend: function() {
        $(".modal").show();
    },
    data: {date_added: date_added, ba: ba, service_type: custom},
    success: function (data) {
        $(".modal").hide();     
        if(data.length != 0) {
            $.each(JSON.parse(data),function(index,val) 
            {
                var values = {};
                values['id'] = val.id;  
                values['name'] = val.name;  
                values['address'] = val.address;    
                values['age'] = val.age;            
                arr.push(values);
            });
        }
    }
});

// ---我从这里开始获取我在数组中添加的值,但它返回一个空,我想从这里开始附加数据,以便不加载ajax的返回数据

// var newval;
$.each(arr,function(key,row) 
{
    console.log(row);
    // newval += '<tr>';
    // newval += '<td></td>';
    // newval += '<td>'+row.id+'</td>';
    // newval += '<td>'+row.name+'</td>';
    // newval += '<td>'+row.address+'</td>';
    // newval += '<td>'+row.age+'</td>';
    // newval += '</tr>';
});
// $("#display_details tbody").append(newval);

1 个答案:

答案 0 :(得分:0)

将您的ajax请求设为同步(阻止)。默认情况下,请求是异步(非阻塞),这意味着浏览器不会等待它们完成以继续其工作。这就是你$.each错误结果的原因。将async: false添加到您的ajax请求中,如下所示,

var arr= [];
$.ajax({
    type: 'POST',
    url: base_url+'joborder/select_account_details/',
    beforeSend: function() {
        $(".modal").show();
    },
    data: {date_added: date_added, ba: ba, service_type: custom},
    success: function (data) {
        $(".modal").hide();     
        if(data.length != 0) {
            $.each(JSON.parse(data),function(index,val) 
            {
                var values = {};
                values['id'] = val.id;  
                values['name'] = val.name;  
                values['address'] = val.address;    
                values['age'] = val.age;            
                arr.push(values);
            });
        }
    },
   async: false // this make it as synchronous
});