Ajax发布到同一页面并重新加载页面而不破坏发布参数

发布于 2024-12-09 01:44:46 字数 477 浏览 0 评论 0原文

有人知道如何在 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 参数将被销毁

Anyone knows how to preserve the post parameters after windows.location.reload(true) ?

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);
     } 
  });
}

If i do a reload on the page. the post parameters will be destroy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲鸠 2024-12-16 01:44:46

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

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

window.location.reload(true);

而是使用

window.location.href

So来完成

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;
        }
    });
}

First your approach is wrong for AJAX; one shouldn't refresh the page after success instead use .html() or .load() method of jQuery.

Now if still you want to do the same then it can't be done using

window.location.reload(true);

instead use

window.location.href

So

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;
        }
    });
}
琉璃繁缕 2024-12-16 01:44:46

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

<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();
     } 
  });
}

Yep you can do it. Just put all your post variables in a hidden form on the page like this :

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

And then submit your form when your ajax call is done :

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();
     } 
  });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文