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

时间:2011-10-11 04:20:09

标签: php ajax post post-parameter

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

2 个答案:

答案 0 :(得分:2)

首先,你的方法对于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;
        }
    });
}

答案 1 :(得分:1)

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

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