gpt4 book ai didi

javascript - 读取 HTML 表单提交上的 JSON 文件

转载 作者:行者123 更新时间:2023-12-01 01:10:05 25 4
gpt4 key购买 nike

我在 JSON 文件中有一个对象数组。我想输入一个 ID,并按顺序由相应对象的 N 个属性之一填充 N 个元素。

(示例.json)

{
"objects": [
{
"key1": "obj1 val1",
"key2": "obj1 val2"
},
{
"key1": "obj2 val1",
"key2": "obj2 val2"
}
]
}

我首先设置 ID 并致力于填充动态元素:

(populate.js)

$(document).ready(function () {
var id = 1;
$.getJSON('example.json', function(example) {
let data = Object.values(example.objects[id]);
let elements = document.querySelectorAll('.dynamic-elements');
elements.forEach((e, i) => {
e.innerHTML = data[i];
});
});
});

(HTML)

<!DOCTYPE html>
<html>
<script src='https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js'></script>

<body>
<div class='dynamic-element'></div>
<div class='dynamic-element'></div>
<script src='populate.js'></script>
</body>

这将在第一个元素上写入“obj2 val1”,在第二个元素上写入“obj2 val2”,这就是我想要的。当我尝试在表单提交上执行相同的操作时,问题就出现了。我将表单添加到 .html:

<form>
<input type='text' name='ID'>
<input type='submit' value='Submit'>
</form>

并将 populate.js 的第一行更改为:

$('form').submit(function () {

我希望每当我单击“提交”时页面都会被对象[1]填充,但什么也没有发生。如果我用简单的 console.log("debug") 替换整个脚本,也不会打印任何内容。有趣的是,如果我还添加了警报(“debug”),那么控制台消息和警报都会起作用。另外,只有当我将脚本调用放在表单下方时,它似乎才起作用。

我是 html/javascript 的新手。有人可以解释为什么会发生这些情况,并帮助我获得所需的行为吗?

编辑:更改后的populate.js完整代码:

//$(document).ready(function () {
$('form').submit(function () {
// This section runs, but not without the alert
console.log("debug");
alert("debug");

// This section no longer seems to run
var id = 1;
$.getJSON('member-db.json', function(db) {
let data = Object.values(db.members[id]);
let elements = document.querySelectorAll('.db-info');
elements.forEach((e, i) => {
e.innerHTML = data[i+1];
});
});
});

最佳答案

因为当您提交表单时,该页面会使用 POST 方法进行重定向。如果你想要console.log("debug"),你必须添加e.preventDefault();

$('form').submit(function (e) {
e.preventDefault();
console.log("debug");
...
});

关于javascript - 读取 HTML 表单提交上的 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55232847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com