【问题标题】:jquery ajax object doesn't want to store variablesjquery ajax 对象不想存储变量
【发布时间】:2026-02-10 19:25:01
【问题描述】:

我正在尝试使用 jquery ajax 将一些 json 数据存储在表中。 到目前为止,我可以手动将数据添加到 .json 文档中,并且内容会显示在表格中。但我试图通过在我的 html 文件中进行输入来实现这一点。我试图从输入文本中获取值到我的 js 文件中,但由于某种原因,该对象不会简单地存储变量。

我已经多次编辑了代码,但我迷路了。任何帮助表示赞赏。

$(function(){

    var $name = $("#name").val();
    var $age = $("#age").val();
    var $town = $("#town").val();
    var $aircraft = $("#aircraft").val();

    $.ajax({
        type: "GET",
        url: "../content/json/members.json",
        success: function(data) {
            flight = JSON.parse(data);
            var tr;
            for (var i = 0; i < flight.length; i++) {
                tr = $("<tr/>");
                tr.append("<td>" + flight[i].name + "</td>");
                tr.append("<td>" + flight[i].age + "</td>");
                tr.append("<td>" + flight[i].town + "</td>");
                tr.append("<td>" + flight[i].aircraft + "</td>");
                $(".members").append(tr);
            }
        }
    });

    $(".sendButton").on("click", function() {

        var postMember = {
            name: $name,
            age: $age,
            town: $town,
            aircraft: $aircraft,
        };

        $.ajax({
            type: "POST",   
            url: "../content/json/members.json",
            data: postMember,
            success: function(postMember) {
                addMember = JSON.parse(postMember);
                tr = $("<tr/>");
                //$.each(addMember, function(i, attribute) {
                tr.append("<td>" + addMember.name + "</td>");
                tr.append("<td>" + addMember.age + "</td>");
                tr.append("<td>" + addMember.town + "</td>");
                tr.append("<td>" + addMember.aircraft + "</td>");
                //});           
                $(".members").append(tr);
            }       
        });
    });
});

【问题讨论】:

  • 您需要一个服务器端页面,它接收“添加”请求,将信息写入 JSON 文件,保存,然后发回文件内容。 *.com/questions/20948155/…

标签: jquery ajax json object


【解决方案1】:

那是因为您在开始时捕获输入值,而不是在用户单击具有“.senButton”类的按钮时提交表单时。

你需要移动这个:

var $name = $("#name").val();
var $age = $("#age").val();
var $town = $("#town").val();
var $aircraft = $("#aircraft").val();

在“.sendButton”点击事件中,它捕获每个输入字段的当前值:

$(".sendButton").on("click", function() {
    var $name = $("#name").val();
    var $age = $("#age").val();
    var $town = $("#town").val();
    var $aircraft = $("#aircraft").val();

这会解决您的问题吗?

【讨论】:

  • 我现在试过了,虽然它没有完全解决我的问题,但我的表格单元格已更新为“未定义”错误。所以至少有进步:)
  • @user3361858 alert $name 等,您的警报是否也未定义或具有正确的值?
  • 警报是空的。
  • 如果你在那个输入中写了一些东西并且它是空的,这可能意味着选择器是错误的?仔细检查选择器($("#name") 等,检查输入实际上有 id 'name' 而不是类;在我身上发生了足够多的时间)并且它们都是正确的。再次提醒。即使你给它写了一些东西,它仍然是空的?
  • 好吧,选择器放错地方了。我把它们放在我的 div:s 中,而不是我的输入类型中。所以我把它们放在它们应该在的地方,当再次发出警报时,我现在得到了输入的值。但表中的新输入仍然显示“未定义”。但是越来越近了……我能感觉到。