简体   繁体   中英

How to change window.location.href in JavaScript and then execute more JS?

I have code snippent which is executed on click of a link which is as below

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

in above code window.location.href=base_url+"main"; redirects the page to its respective page but this stops the execution of the code written just next to it. Now I want this code to be executed as it is been written ie firstly the code should take me to the respective "main" page and then code writte after that must execute and give me a required output.

Can someone guide me to achieve this?

window.location.href = base_url + "main"; <- when you load this page, call your code defined at ///next

you will have to add some parameters:

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

The other way would be to load the page with ajax into a div in the html.

Have a look at $.ajax() from jQuery.

please try to write

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

just before the end of if condition or use

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

As already been noticed, you cant execute code after you went to another page

What you can do is to create redirector function, that will pass your function in cookie and ,redirect and then eval it on next page. (with another call to that redirector on next page)

But you should be aware of number of issues

1) Packing. It is upon you to decide how you pack cookie.

2) Encription. If you pass non-packed OR non-encrypted cookie the "bad user" can pass some malware code inside that cookie.

3) You should have VERY, VERY good reasons to do it. This way is too complicated, hard to code, hard to maintain

Much better if you do additional server-side controls, save it somewhere and reload on next page with one more request.

You'll need to wrap the rest of the JS code inside a window.onbeforeunload callback.

See here: Intercept page exit event

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM