jQuery $.getJSON works only once for each control. Doesn't reach the server again

前端 未结 4 2008
Happy的楠姐
Happy的楠姐 2021-02-04 13:40

First my code

$.getJSON(\"./posts/vote/\" + postId + \"/1\", null, function(result) {
   if (result.result == true)
      $(\"#pst\" + postId + \" > .pstside          


        
4条回答
  •  南方客
    南方客 (楼主)
    2021-02-04 14:31

    Sounds like a browser cache issue (if is that I'm pretty sure that is happening with IE), you may want to use $.ajax and set the cache option to false, since it is false by default only for dataType script and jsonp:

    $.ajax({
      type: "GET",
      url: "./posts/vote/" + postId + "/1",
      success: function (result) {
        if (result.result == true)
          $("#pst" + postId + " > .pstside > .rank > .score").html(result.voteCount);
      },
      dataType: "json",
      cache: false
    });
    

    Or you could set that option globally, for all the jQuery Ajax functions, using $.ajaxSetup before using $.getJSON:

    $.ajaxSetup({ cache: false });
    

    Edit: You can do a POST request returning JSON like this:

    $.post("./posts/vote/" + postId + "/1", 
      function (result) {
        if (result.result == true)
          $("#pst" + postId + " > .pstside > .rank > .score").html(result.voteCount);
      }, "json");
    

    If you plan to do a lot of postJSON request, you can make your own function:

    jQuery.postJSON = function(url, data, callback) {
        jQuery.post(url, data, callback, "json") ;
    };
    

    And you'll be able to use it just like $.getJSON

提交回复
热议问题