使用CodeIgniter中的JSON数据自动填充输入框

时间:2015-01-17 01:59:57

标签: php jquery ajax json codeigniter

对不起,我正在绞尽脑汁,很长一段时间没用过这个。我有一个表单,你把电话号码放在更改中,然后向数据库提交一个AJAX调用,该数据库发布数据并查询数据库。然后将响应发送回我在Firefox中通过Firebug看到响应值的页面,但对于我的生活,我无法弄清楚如何使用信息更新文本框字段的数据。任何帮助都会很棒。这也是使用CodeIgniter的框架,数据是json_ecoded

以下是我的输入字段,用户填写customer_phone并在更改时提交AJAX调用并发回一个如下所示的响应:

<input type="text" name="customer_phone" id="customer_phone" value="" />
<input type="text" name="customer_name" id="customer_name" value="" />
<input type="text" name="customer_address" id="customer_address" value="" />

这是ajax电话。

$('#customer_phone').change(function() {
  var form_data = {
    customer_phone : $('.customer_phone').val(),
    ajax : '1'
  };
  $.ajax({
    url: "<?php echo site_url('home/customer_search'); ?>",
    type: 'POST',
    async : false,
    data: form_data,
    dataType: 'json',
    success: function(datas) {
      $('.customer_name').val(datas['customer_name']);
    }
  });
  return false;
});

一旦页面收到来自后端的响应,我就无法弄清楚如何使用数据库中的值更新文本框字段。

这是我通过Firebug收到的回复

[{
  "customer_phone_number": "4124020388",
  "id": "2",
  "customer_name": "Fudgie Wudgie",
  "customer_address_1": "3811"
}]

4 个答案:

答案 0 :(得分:1)

看起来返回的JSON是多维的,因为所有值(customer_name等)都在一个键下,在本例中为0。

所以你可以通过以下方式访问它:

datas[0]['customer_name']

这是一个jsfiddle,其中第一个弹出窗口是代码中的方式,第二个弹出窗口使用[0]:http://jsfiddle.net/wqfp1k1b/

同样如前所述,使用#代替。在选择器中的字段ID。

修改

看到你已经自己解决了这个问题。抱歉,没有看到您回复了有关查看问题的答案。

答案 1 :(得分:0)

更改此行:

$('.customer_name').val(datas['customer_name']);

到这一个:

$('#customer_name').val(datas.customer_name);

答案 2 :(得分:0)

为什么使用return false。删除:

 $('.customer_name').val(datas['customer_name']); //you cannot access object like this.

改为使用:

 $('.customer_name').val(datas.customer_name);

答案 3 :(得分:0)

首先应该有一个#,因为你在这里使用ID,

$('#customer_name').val(datas['customer_name']);

并在您的php页面中,使用json_encode函数将数组转换为json。

然后ajax调用应返回没有方括号的json数据,并且您当前的代码将起作用。