【问题标题】:Jquery - parsing returned AJAX Data into existing for fieldsJquery - 将返回的 AJAX 数据解析为现有的字段
【发布时间】:2016-12-10 09:18:01
【问题描述】:

我正在使用以下内容从数据库中读取数据。

$.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

谁能指出我正确的方向。

谢谢

【问题讨论】:

    标签: jquery json ajax forms populate


    【解决方案1】:

    您的php 代码可能将数据作为字符串返回,而没有告诉您的浏览器处理结果的相关标头是 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2014-11-16
      • 2013-10-15
      • 2012-05-16
      相关资源
      最近更新 更多