【问题标题】:Uncaught TypeError: Cannot read property 'appendChild' of undefined after Ajax call未捕获的类型错误:Ajax 调用后无法读取未定义的属性“appendChild”
【发布时间】:2015-01-26 19:10:21
【问题描述】:

我想用新的 Ajax 响应 html 替换我的 html,但此错误显示在控制台中,并且我的脚本文件未正确加载。显然这个错误出现在文件“jquery-1.10.1.min.js”中。以下是我用来替换成功函数中的 html 的 ajax 代码。

$(function() {
         $('#addcustomer-done').click(function() {

       var formData = new FormData($('#submit_form')[0]);

       //---------------------- AJAX CALL 1 -----------------------------------------//
       $.ajax({
            // headers : {
                      // 'X-CSRF-Token' : document.getElementsByName('csrfmiddlewaretoken')[0].value
                  // },
            url : "/savecustomer/",
            type : "POST",

             data:formData,
             contentType: false,
             cache: false,
             processData: false,
             async: false,

             cache:false,
             contentType: false,
             processData: false,


            success : function(data) {
                alert(data);

                $("html").html("");
                $("html").html(data);
            }

我是 ajax 的初学者。请指导我如何摆脱这个错误。提前致谢。

【问题讨论】:

  • 从 ajax 中移除 async:false
  • @AnoopJoshi 还是同样的错误。
  • 不要清除html标签内的元素。使用 $("body").append(data);

标签: javascript jquery ajax jquery-plugins ajaxform


【解决方案1】:

不要清除 html 标签内的元素。使用 dom 中存在的元素来附加值。还要从您的ajax 中删除async:false。因为 ajax 应该异步运行。

$(function() {
    $('#addcustomer-done').click(function() {
        var formData = new FormData($('#submit_form')[0]);
        $.ajax({
            url: "/savecustomer/",
            type: "POST",

            data: formData,
            success: function(data) {
                console.log(data);
                $("#id of element inside tab").append(data);
            }
        });
    });
});

【讨论】:

  • 感谢您删除了错误,但它刷新了我的整个页面。我实际上正在使用引导表单向导,我想保留在特定选项卡上并重新加载页面而不刷新整个内容。
  • 查看编辑。为选项卡内的元素提供 id 或类。并将值附加到其中
  • 为了清楚起见,我有一个下拉选择需要在添加客户后更新。
  • 我试过 $('#tab2').replaceWith($(data).find("#tab2").html());它工作得很好。谢谢你的帮助:)
  • 上面的代码行有点错误。试试这个 $('#replace-div').html($(data).find("#replace-div").html());
猜你喜欢
  • 1970-01-01
  • 2021-06-05
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2020-07-19
  • 2021-12-22
相关资源
最近更新 更多