Jquery - 将返回的 AJAX 数据解析为现有字段
Jquery - parsing returned AJAX Data into existing for fields
我正在使用以下内容从数据库中读取数据。
$.ajax({
url: 'loader.php',
success: function(data) {
console.log(data)
}
});
这是返回:[{"name":"Bob Green","ID":"1234"}]
返回的数据由 php 创建,格式只是手动创建然后回显。我可以改变它的完成方式,它会让事情变得更容易。
返回 data
后,我想更新现有表格。表单字段名称与返回数据中的键匹配。大多数是文本字段,但有几个下拉列表和复选框。
我已经尝试了在另一个问题上找到的以下方法,但没有用。
function populate(frm, data) {
$.each(data, function(key, value){
var $ctrl = $('[name='+key+']', frm);
switch($ctrl.attr("type"))
{
case "text" :
case "hidden":
$ctrl.val(value);
break;
case "radio" : case "checkbox":
$ctrl.each(function(){
if($(this).attr('value') == value) { $(this).attr("checked",value); } });
break;
default:
$ctrl.val(value);
}
});
}
当我在控制台记录 key & value
时,它显示数据为单独的字母,而不是 name:Bob Green
& ID:1234
谁能给我指出正确的方向。
谢谢
您的 php
代码 return 数据作为字符串可能没有告诉浏览器处理结果的相关 header json.
为此,您可以使用:
$data = /* Some variable that contains your data */;
header('Content-Type: application/json');
echo json_encode($data);
另一种选择是告诉您的 ajax 请求将请求结果处理为 json:
$.ajax({
url: 'loader.php',
dataType: 'json', // This way jquery will try to handle the returned data as json object
success: function(data) {
console.log(data);
console.log(data);
}
});
请注意,这些并不相同:
console.log('[{"name":"Bob Green","ID":"1234"}]')
[{"name":"Bob Green","ID":"1234"}]
console.log([{"name":"Bob Green","ID":"1234"}])
[Object]:
ID: "1234"
name: "Bob Green"
我正在使用以下内容从数据库中读取数据。
$.ajax({
url: 'loader.php',
success: function(data) {
console.log(data)
}
});
这是返回:[{"name":"Bob Green","ID":"1234"}]
返回的数据由 php 创建,格式只是手动创建然后回显。我可以改变它的完成方式,它会让事情变得更容易。
返回 data
后,我想更新现有表格。表单字段名称与返回数据中的键匹配。大多数是文本字段,但有几个下拉列表和复选框。
我已经尝试了在另一个问题上找到的以下方法,但没有用。
function populate(frm, data) {
$.each(data, function(key, value){
var $ctrl = $('[name='+key+']', frm);
switch($ctrl.attr("type"))
{
case "text" :
case "hidden":
$ctrl.val(value);
break;
case "radio" : case "checkbox":
$ctrl.each(function(){
if($(this).attr('value') == value) { $(this).attr("checked",value); } });
break;
default:
$ctrl.val(value);
}
});
}
当我在控制台记录 key & value
时,它显示数据为单独的字母,而不是 name:Bob Green
& ID:1234
谁能给我指出正确的方向。
谢谢
您的 php
代码 return 数据作为字符串可能没有告诉浏览器处理结果的相关 header json.
为此,您可以使用:
$data = /* Some variable that contains your data */;
header('Content-Type: application/json');
echo json_encode($data);
另一种选择是告诉您的 ajax 请求将请求结果处理为 json:
$.ajax({
url: 'loader.php',
dataType: 'json', // This way jquery will try to handle the returned data as json object
success: function(data) {
console.log(data);
console.log(data);
}
});
请注意,这些并不相同:
console.log('[{"name":"Bob Green","ID":"1234"}]')
[{"name":"Bob Green","ID":"1234"}]
console.log([{"name":"Bob Green","ID":"1234"}])
[Object]:
ID: "1234"
name: "Bob Green"