如何在JavaScript中更改window.location.href然后执行更多JS?

时间:2011-11-21 09:23:14

标签: javascript jquery window.location

我有代码片段,点击链接后执行,如下所示

cj_redirecturl="/HomeWork/main/load_course";
    utility.xhttprw.data(cj_redirecturl,{data:courseid},function(response){
        if(response){
            window.location.href=base_url+"main";

///next
utility.xhttprw.data(redirecturl,{data:""},function(response){
        if(response){

            id=ent;
            document.getElementById('content').innerHTML=response;
             // Assignemnt module
             //Call function from javascript/assignment.js file to display particular assignment  (ent:means assignment_id) //  
                if(con==5)
                {
                    get_assignment_id(ent);
                }
                if(con==9)
                {
                    get_content_details(ent);
                }


        }   //end of response       
    },false,false,false,'POST','html',true); 
        }
    },false,false,false,'POST','html'); 
上面的代码window.location.href=base_url+"main";中的

将页面重定向到其各自的页面,但这会停止执行紧接着它编写的代码。现在我希望这个代码在写入时执行,即首先代码应该带我到相应的“主”页面,然后代码写入后必须执行并给我一个必需的输出。

有人可以指导我实现这个目标吗?

5 个答案:

答案 0 :(得分:8)

window.location.href = base_url + "main";< - 加载此页面时,请调用///next

中定义的代码

你必须添加一些参数:

window.location.href=base_url+"main?parameter=true";

另一种方法是将带有ajax的页面加载到html中的div中。

从jQuery看一下$.ajax()

答案 1 :(得分:2)

请尝试写

window.location.href = base_url + "main";

在if条件结束之前或使用

setTimeout('window.location.href=base_url+"main"', 2000);

答案 2 :(得分:2)

正如已经注意到的那样,在你去另一个页面后你无法执行代码

你可以做的是创建重定向器功能,它将在cookie中传递你的功能,并在下一页重定向然后评估它。 (下一页再次调用该重定向器)

但你应该知道一些问题

1)包装。由您来决定如何包装饼干。

2)征兵。如果您传递非打包的OR非加密cookie,“坏用户”可以在该cookie中传递一些恶意软件代码。

3)你应该有非常好的理由去做。 这种方式太复杂,难以编码,难以维护

如果您执行其他服务器端控件,将其保存在某处并在下一页上重新加载并再添加一个请求,那就更好了。

答案 3 :(得分:1)

您需要将其余的JS代码包装在window.onbeforeunload回调中。

见这里:Intercept page exit event

答案 4 :(得分:0)

从页面退出之前,您需要使用onBlur事件继续执行js代码。

示例:

function downloadExcel()
{
// Your code...

        $('#download_excel_button').hide();
        $('#download_spinner').show();

        window.location.href = download_page;

        window.onblur = function(event) 
        { 
            // other event code...

            $('#download_spinner').hide();
            $('#download_excel_button').show(); 
        }
}