【问题标题】:Changes done in ajax success not loading in page without refreshing在 ajax 成功完成的更改未在页面中加载而不刷新
【发布时间】:2017-04-10 10:08:39
【问题描述】:

我在 javascript 中有一个 ajax 块,它执行一些操作,然后更改我页面中的文本框。

$.ajax({
    type: "POST",
    url: "/post_to_page/",
    data: JSON.stringify({'titleid': parseInt(count_id)}),
    cache: false,
    success: function(data){
    var content_id = "count_" + count_id;
    var votes = $(content_id ).val();
    $(upvotes_id).html(votes);
    //window.location.reload();
    }
    });

只有在我刷新页面后才会反映内容值。当文档准备好时,我尝试将缓存参数设置为 false 并在 ajaxSetup 中设置相同。变化仍然没有得到反映。请帮忙。

【问题讨论】:

  • 请提供所有相关代码。变量 upvotes_id 里面是什么?另外,不是“count_”ID而不是标签名称吗?
  • 您以错误的方式投票。投票值应该是 $("#content_id").val();或 $(".content_id").val();我认为这个“upvotes_id”应该是 ID ot Class 所以请尝试使用 $("#upvotes_id").html(votes); if class 或 "$(".upvotes_id").html(votes)" if class.

标签: javascript jquery ajax


【解决方案1】:

看起来成功函数中没有引用您的返回变量“数据”。正如在别处指出的那样,也缺少 id 或类引用。试试这个(或任何其他相关变量):

var content_id = "#count_" + data.count_id;

【讨论】:

    【解决方案2】:

    添加哈希以获取类似的值 var votes = $('#'+content_id ).val();

    【讨论】:

      【解决方案3】:

      我想你忘了在 id 前加“#”

      $.ajax({
      type: "POST",
      url: "/post_to_page/",
      data: JSON.stringify({'titleid': parseInt(count_id)}),
      cache: false,
      success: function(data){
      var content_id = "count_" + count_id;
      var votes = $('#'+content_id ).val();   // add hash for id or . for class
      $(upvotes_id).html(votes);
      //window.location.reload();
      }
      });
      

      【讨论】:

        【解决方案4】:

        我假设 upvotes_id 是 id 或 class。使用 $("#upvotes_id").html(votes) 或 $(".upvotes_id").html(votes) 代替。在 "content_id" 的情况下相同。

        【讨论】:

        • 是的,你是对的。那是我的一个小错误。但在更正之后,这些更改也只有在页面重新加载后才会反映出来。
        【解决方案5】:

        我可以看到您的代码存在一些问题,例如没有“#”来引用元素。

        更正:

        $.ajax({
            type: "POST",
            url: "/post_to_page/",
            data: JSON.stringify({'titleid': parseInt(count_id)}),
            cache: false,
            success: function(data){
               **var content_id = "#count_" + count_id;**
               var votes = $(content_id ).val();
               $(upvotes_id).html(votes);
               //window.location.reload();
            }
        });
        

        你也没有提到你是如何得到upvotes_id的。在那里也使用#。您没有使用成功方法中返回的响应。是故意的吗?

        【讨论】:

          猜你喜欢
          • 2019-11-20
          • 2018-05-09
          • 2017-10-06
          • 1970-01-01
          • 2016-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-10
          相关资源
          最近更新 更多