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

标签 javascript jquery json ajax

我使用脚本来自动填充表单。当用户从下拉列表中选择一个选项时,它会向外部文件发出 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 为 postsjoindate 的表单字段将被更改自动填充。

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

换句话说,该函数应该自动解析返回的 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]);
                }
            }
        }
    });
}

关于javascript - 自动解析和格式化 JSON 属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650724/

相关文章:

javascript - 使用 d3 为传单创建密度和值(value)热图层

javascript - 使用 JavaScript 单击 HREF

javascript - AngularJS:多个 $http 请求和 .then promise 返回未定义

java - Jersey 演示应用程序中的 MediaType.APPLICATION_XML 和 MediaType.APPLICATION_JSON

javascript - 如何从 Json 中检索所有图像?

javascript - 如何在 typescript 中将这些对象转换为数组

javascript - 想要仅启用下拉列表中的第一个选项并禁用其他选项

javascript - CodeMirror javascript 装订线行数字填充

C# linq groupby 包括 json

javascript - 具有全选的多个复选框