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"