【问题标题】:How to output json array value in ajax success?如何在ajax成功中输出json数组值?
【发布时间】:2017-03-03 04:46:02
【问题描述】:

我已发布数据并使用 json_encode 返回值,并在 ajax 成功阶段获得该值。但我无法在特定输入中输出该数据值。这是我的html输入。返回值显示在控制台和警告框中,如下所示。

{"status":"0","data":[{"user_id":"1","start_time":"00:00:00","end_time":"01:00:00", "date_select":"2017-03-23","admin_flag":"0","interview_plan_staff_id":"1","interview_plan_staff_name":"管理员","user_name":"\u304a\u306a\u307e\u30481" },{"user_id":"31","start_time":"00:00:00","end_time":"01:00:00","date_select":"2017-03-23","admin_flag" :"0","interview_plan_staff_id":"1","interview_plan_staff_name":"Administrator","user_name":"uchida"}]}

<input type="text" id="admin_id" class="form-control">

这是我的 ajax

function cal_click(cal_date){
   var calDate = cal_date
   var date_format = calDate.replace(/-/g, "/");
   var base_url = <?php base_url(); ?>
   $.ajax({
    type: "post",
    url: "<?php echo base_url('Admin_top/getcal');?>",
    data: {calDate:calDate},
    cache: false,
    async: false,
    success: function(result){

            console.log(result);
            alert(result);

        }

    });
}

【问题讨论】:

  • console.log(result.data[0].user_id);
  • 我不明白你的问题。您可以使用result.status 访问结果以获取状态,使用result.data 获取用户数组。你还想要什么?

标签: php jquery json ajax


【解决方案1】:

使用JSON.parse 从结果中获取特定输入

    function cal_click(cal_date){
       var calDate = cal_date
       var date_format = calDate.replace(/-/g, "/");
       var base_url = <?php base_url(); ?>
       $.ajax({
        type: "post",
        url: "<?php echo base_url('Admin_top/getcal');?>",
        data: {calDate:calDate},
        cache: false,
        async: false,
        success: function(result){

                console.log(result);
                var obj = JSON.parse(result);
                alert(obj.status);
                //alert(result);
                var user_id = [];
                var start_time = [];
                for (i = 0; i < obj.data.length; i++) {
                   user_id[i] = obj.data[i].user_id;
                   start_time[i] = obj.data[i].start_time;
                }
             alert(' First user '+user_id[0]+' Second User '+ user_id[1]+' First start_time '+start_time[0]+' Second start_time '+ start_time[1] );

            }

        });
    }

【讨论】:

  • 如果要获取数据,请使用alert(obj.data[0].end_time); 获取数据数组中的 end_time。
  • 是的兄弟,状态是工作,但 [] 括号之间的数据不出来。 :(请帮帮我
  • 我无法检索“user_id”和任何其他内部数据:。请兄弟帮帮我。
  • 使用alert(obj.data[0].user_id);获取user_id里面的数据
  • 或者你可以使用 for 循环来获取数据中的值
【解决方案2】:

使用each循环获取id,结果是一个有数据数组的对象:

$.each(result.data,function(i,v){
     console.log(v.user_id);
     //$('.admin_id').val(v.user_id);//use val to append the value, note you have multiple ids so you need multiple inputs 
});

如果这不起作用,那么您返回一个字符串而不是 json,因此您需要使用以下方法将其转换为 json:

var result = JSON.parse(result);

【讨论】:

  • 感谢您的回复兄弟,但两者都不起作用。 :(我不知道为什么?
  • 你的 ajax 成功了吗?你能贴一张你的 xhr 请求的图片吗?
  • 是的兄弟,我的 ajax 成功了,我可以提醒成功的结果。请指导我如何在评论中发布图片。
  • 在评论中粘贴链接或使用链接更新您的问题
  • 尝试类似:var data = JSON.parse(result.data);var id = data.user_id; 并告诉我是否可行
【解决方案3】:

阅读以下文章,您将了解 json 解析

Parse JSON from JQuery.ajax success data

how to parse json data with jquery / javascript?

你可以试试这样循环

var parsedJson  =   $.parseJSON(json);
$(parsedJson).each(function(index, element) {
    console.log(element.status);
    $(element.data).each(function(k,v) {
        console.log(v.user_id);
    });
});

【讨论】:

    【解决方案4】:

    在 AJAX 回调中,您可以使用 result.data 访问要返回的对象数组。您可以像使用任何其他 Javascript 对象一样使用它们。您可能需要先反序列化 JSON。

    要完成您想要做的事情,下面的代码可以解决问题,尽管它只会使用数组中的第一个对象,因为您只有一个文本框。

    var responseObj = JSON.parse(result);
    document.getElementById('admin_id').value = responseObj.data[0].user_id;
    

    【讨论】:

    • 我照你说的做了,就是这么说的 - jquery-1.12.4.min.js:4 Uncaught TypeError: Cannot read property '0' of undefined
    • 在这种情况下,您可能需要先使用 JSON.parse(result) 根据其他一些答案解析数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多