【问题标题】:jquery ajax object doesn't want to store variablesjquery ajax 对象不想存储变量
【发布时间】:2015-06-04 21:45:28
【问题描述】:

我正在尝试使用 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);
            }       
        });
    });
});

【问题讨论】:

标签: 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 中,而不是我的输入类型中。所以我把它们放在它们应该在的地方,当再次发出警报时,我现在得到了输入的值。但表中的新输入仍然显示“未定义”。但是越来越近了……我能感觉到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 2010-12-07
  • 2014-12-27
相关资源
最近更新 更多