在ajax成功的window.location命令之后保持data.d值

时间:2014-07-26 19:27:43

标签: jquery asp.net ajax

我正在研究一些实际上是网站A上的迷你搜索框的代码,它会接受一些输入,然后路由到网站B.网站B将根据网站A上使用的搜索条件显示结果。

我在网站B上有一个准备好接受参数的网络方法。我从网站A调用这个web方法,我可以看到查询执行正常。我的问题是web方法的结果是一个html字符串,然后放到站点B上Div的.html属性.html不是整个页面,事实上它只是搜索结果。

我理想情况下需要重定向到该页面&将html注入div。全部来自网站A的主要ajax呼叫。

这是我的代码:(从网站a调用)

$.ajax({
    type: "POST",
    url: 'http://siteb.com/default.aspx/doSearch',
    data: jdata,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    cache: false,
    success: function (data) {
        window.location = "http://www.siteb.com/default.aspx";
        $("#pageContentWrapper").html(data.d);
    },
    error: function () {
        alert("An error happened while getting the search");
    }
});

所以pageContentWrapper是我想要渲染data.d结果的地方。一切正常,直到window.location转到站点b,我认为data.d脱离了上下文,我得到了没有任何搜索结果的主要默认页面。

有没有办法可以保存data.d的上下文直到完成ajax请求,还是有更好的方法来完成这个?

非常感谢

2 个答案:

答案 0 :(得分:0)

Wy,你不这样做:

http://www.siteb.com/search.aspx?s=What it A

然后在网站B上完成搜索?

答案 1 :(得分:0)

这不是一个背景问题。当您致电window.location时,您正在浏览器导航到完全不同的页面。您正在运行的任何JavaScript(在这种情况下为$("#pageContentWrapper").html(data.d))将完全停止。您需要找到一些其他方式来传递您想要维护的信息,方法是将其传递到URL参数(http://www.siteb.com/default.aspx?query=some_query)或在站点b上呈现内容而不强制页面重定向