在 CodeIgniter 中使用来自 JSON 的数据自动填充输入框
Auto fill input boxes with data from JSON in CodeIgniter
对不起,我正在绞尽脑汁,我已经很长时间没有使用它了。我有一个表单,您可以在其中输入一个 phone 数字,并在更改时向数据库提交一个 AJAX 调用,其中 post 是数据,查询是数据库。然后将响应发送回我在 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"
}]
更改此行:
$('.customer_name').val(datas['customer_name']);
给这个:
$('#customer_name').val(datas.customer_name);
你为什么使用 return false。删除:
$('.customer_name').val(datas['customer_name']); //you cannot access object like this.
改为使用:
$('.customer_name').val(datas.customer_name);
首先应该有一个 #
因为你在这里使用 id,
$('#customer_name').val(datas['customer_name']);
并在您的 php 页面中,使用 json_encode
函数将数组转换为 json。
然后 ajax 调用应该 return json 没有方括号的数据,您当前的代码将起作用。
看起来返回的 JSON 是多维的,因为您的所有值(customer_name 等)都在一个键下,在本例中为 0。
因此您可以通过以下方式访问它:
datas[0]['customer_name']
这是一个 jsfiddle,其中第一个弹出窗口是您代码中的方式,第二个弹出窗口使用 [0]:http://jsfiddle.net/wqfp1k1b/
同样如前所述,使用 # 而不是 。在字段 ID 的选择器中。
编辑
看到你已经自己解决了这个问题。抱歉没看到你回复了看到问题的答案。
对不起,我正在绞尽脑汁,我已经很长时间没有使用它了。我有一个表单,您可以在其中输入一个 phone 数字,并在更改时向数据库提交一个 AJAX 调用,其中 post 是数据,查询是数据库。然后将响应发送回我在 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"
}]
更改此行:
$('.customer_name').val(datas['customer_name']);
给这个:
$('#customer_name').val(datas.customer_name);
你为什么使用 return false。删除:
$('.customer_name').val(datas['customer_name']); //you cannot access object like this.
改为使用:
$('.customer_name').val(datas.customer_name);
首先应该有一个 #
因为你在这里使用 id,
$('#customer_name').val(datas['customer_name']);
并在您的 php 页面中,使用 json_encode
函数将数组转换为 json。
然后 ajax 调用应该 return json 没有方括号的数据,您当前的代码将起作用。
看起来返回的 JSON 是多维的,因为您的所有值(customer_name 等)都在一个键下,在本例中为 0。
因此您可以通过以下方式访问它:
datas[0]['customer_name']
这是一个 jsfiddle,其中第一个弹出窗口是您代码中的方式,第二个弹出窗口使用 [0]:http://jsfiddle.net/wqfp1k1b/
同样如前所述,使用 # 而不是 。在字段 ID 的选择器中。
编辑
看到你已经自己解决了这个问题。抱歉没看到你回复了看到问题的答案。