【问题标题】:Ajax post to same page and reload the page without destroying the post parametersAjax 发布到同一页面并重新加载页面而不破坏发布参数
【发布时间】:2025-12-24 15:45:16
【问题描述】:

有谁知道如何在 windows.location.reload(true) 之后保存 post 参数?

function handler(event,ui)
{
  $(this).find(".thumb").remove();
  $(this).append('<img class="thumb" src="'+ui.draggable.attr('src')+'">');

  imageurl = ui.draggable.attr('src');

  $.ajax({
     type: "POST",
     url: 'www.check.com.sg/', 
     data: {name: imageurl}, 
     complete:function(){
        window.location.reload(true);
     } 
  });
}

如果我在页面上重新加载。 post 参数将被销毁

【问题讨论】:

    标签: php ajax post post-parameter


    【解决方案1】:

    首先,您的方法对于 AJAX 是错误的;成功后不应该刷新页面,而是使用 jQuery 的 .html() 或 .load() 方法。

    现在,如果您仍然想做同样的事情,那么使用

    是无法做到的
    window.location.reload(true);
    

    改为使用

    window.location.href
    

    所以

    function handler(event, ui) {
        $(this).find(".thumb").remove();
        $(this).append('<img class="thumb" src="' + ui.draggable.attr('src') + '">');
        imageurl = ui.draggable.attr('src');
        $.ajax({
            type: "POST",
            url: 'www.check.com.sg/',
            data: {
                name: imageurl
            },
            complete: function() {
                var currentURL = window.location.href + '?var1=' + var1 + '&var2=' + var2;
                window.location.href = currentURL;
            }
        });
    }
    

    【讨论】:

      【解决方案2】:

      是的,你可以做到。只需将所有帖子变量以隐藏形式放在页面上,如下所示:

      <form action="" method="post" id="myform">
          <input type="hidden" name="my_var1" value="value_of_my_var1" />
          <!-- More inputs here.... -->
      </form>
      

      然后在完成 ajax 调用后提交表单:

      function handler(event,ui)
      {
        $(this).find(".thumb").remove();
        $(this).append('<img class="thumb" src="'+ui.draggable.attr('src')+'">');
      
        imageurl = ui.draggable.attr('src');
      
        $.ajax({
           type: "POST",
           url: 'www.check.com.sg/', 
           data: {name: imageurl}, 
           complete:function(){
              $('#myform').submit();
           } 
        });
      }
      

      【讨论】: