处理Ajax重定向并将内容加载到新页面

时间:2014-01-27 08:21:40

标签: php jquery ajax

我正在使用Ajax动态更新数据表而不刷新。到目前为止我没有问题。用户从表单中选择某些条件。问题是,我不再想要将内容提取到同一页面,但我想在不同的模板上重定向和加载内容:

用户选择( Page1.html ) - > Ajax - >重定向到 Page2.html - >在Page2

中加载数据

有人请看看下面的代码,并告知为什么它不起作用?我能够重定向,但没有任何返回的数据。

的Ajax

if (t && e ) {
    dataArray = new Array;
    dataArray[0] = e;
    dataArray[1] = t;

 $.ajax({
   type: "POST",
   url: "includes/filter.php",
   data: {
       Name: e,
       Color: t,
          },

        success: function (e) {           

        window.location.href = 'Page2.html';  // Redirect to this page
        $("#Wrapper").html(e);    // Load content to this page in Div # Wrapper

        // If I Uncomment the two lines above and just add $("#table").html(e); it will successfully load content within the table div on the same page

        }
    });
  }

其中filter.php处理服务器端查询并输出带有数据的html表。 感谢

4 个答案:

答案 0 :(得分:1)

将e和t传递到下一页,如

window.location.href = 'Page2.html?e=' + e + '&t=' + t;

加载page2后,获取e和t并进行ajax调用并替换包装器的html。在您当前的解决方案中,在更换包装器html之前加载page2。

用于从数组创建查询字符串:

var array = [],
array["Name"] = "Car";
array["Color"] = "Red";
var queryStr = "";

for (var key in array){
  if(queryStr != "") queryStr += "&";
  queryStr += key + "=" + array[key];
}

var url = "Page2.html?" + queryStr;

答案 1 :(得分:0)

  

试试这个:

if (t && e ) {
        dataArray = new Array;
        dataArray[0] = e;
        dataArray[1] = t;

     $.ajax({
       type: "POST",
       url: "includes/filter.php",
       data: {
           Name: e,
           Color: t,
              },

            success: function (data) {           

            window.location.href = 'Page2.html?data='+data ;  // Redirect to this page


            }
        });
      }
  

使用POST发送到页面的请求后。并添加此行   page2.html $(“#Wrapper”)。html(e);

答案 2 :(得分:0)

我建议明确选择你的路径:

  • 选项1:删除ajax请求,然后打开一个新窗口

    window.open('Page2.html?filter=yabayabayaba')

  • 选项2:使用ajax请求,并将结果加载到对话框中(使用bootstrap或jquery-ui)

    success: function (e) { $(e).dialog(); }

答案 3 :(得分:0)

这里有一些问题。

  1. 执行window.location.href = 'Page2.html';时,会停止执行其余代码并重定向浏览器。

  2. $("#Wrapper").html(e);在您的AJAX成功函数中。所以 只会在AJAX通话后开火。加载新页面时 此代码未执行。 (由于它前面的重定向,它永远不会发射。)

  3. AJAX的重点是不重定向用户。如果您正在重定向它们,那么为什么不加载Page2.html中的正确内容,而不是使用javascript插入它?

    或者,您可以删除重定向,只需使用AJAX请求将整个Page2.html文件加载到当前页面中代替原始模板。

    我不知道您的HTML是什么样的,但如果Page2.html有一个名为#wrapper的div,那么您需要做的就是将Page2.html的#wrapper内部的所有内容加载到Page1.html的#wrapper中:

    $('#wrapper').load('Page2.html #wrapper');
    

    您应该在AJAX成功函数中使用该代码代替重定向。您可以查看有关.load()here的更多信息。