Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动解析和格式化JSON属性名称_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 自动解析和格式化JSON属性名称

Javascript 自动解析和格式化JSON属性名称,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我使用脚本自动填充表单。当用户从下拉列表中选择一个选项时,它会向一个外部文件发出AJAX请求,该文件使用json_encode从数据库返回数据,表单会自动填充 代码如下: function myrequest(e) { var name = $('#username').val(); $.ajax({ method: "POST", url: "autofill.php", dataType: 'json', cac

我使用脚本自动填充表单。当用户从下拉列表中选择一个选项时,它会向一个外部文件发出AJAX请求,该文件使用json_encode从数据库返回数据,表单会自动填充

代码如下:

function myrequest(e) {
    var name = $('#username').val();
    $.ajax({
        method: "POST",
        url: "autofill.php",
        dataType: 'json',
        cache: false,
        data: {
            username: name
        },
        success: function(responseObject) {
            $('#posts').val(responseObject.posts);
            $('#joindate').val(responseObject.joindate);
        }
    });
}
如您所见,当ID为username的下拉列表被更改时,将进行AJAX调用,并且带有ID posts和joindate的表单字段将自动填充

但是,我想对更多表单使用相同的函数,这些表单将自动填充具有不同ID的字段,当然,JSON将返回其他数据。有没有办法修改这个函数,这样我就不需要像$'posts.valresponseObject.posts这样单独写一行了;对于要解析的每个JSON值


换句话说,函数应该自动解析返回的JSON数据,如果有具有特定ID的字段,则应该自动填充。所以,如果JSON返回像{abc123:666,some_other_field:2017-03-06}这样的数据,函数应该找到并相应地预先填充ID为abc123和some_other_field的字段。

我想类似的方法可以工作:

function myrequest(e) {
    var name = $('#username').val();
    $.ajax({
        method: "POST",
        url: "autofill.php",
        dataType: 'json',
        cache: false,
        data: {
            username: name
        },
        success: function(responseObject) {
            for (var prop in responseObject) {
                if (responseObject.hasOwnProperty(prop)) {
                    $('#' + prop).val(responseObject[prop]);
                }
            }
        }
    });
}

大多数这类问题都可以用括号表示法来解决。例如,responseObject[someVariable]=someOtherValue。假设someVariable='abc123',这将用someOtherValue填充responseObject.abc123,如果对象上不存在该属性,它将创建它。因此,您只需传入一个属性名称和值数组,这取决于您希望对象的设置方式,然后就可以了。没问题!如果这回答了您的问题,请标记为答案。