redirect met ajax
Ik heb op een ene pagina een ajax request naar de andere pagina. Nu wil ik dat op de andere pagina een redirect komt. Maar ik ga niet naar de andere pagina. Ik wil dit liever niet in js doen want dan kan je de redirect tegen gaan omdat het clientside is.
Ik vond dit op internet maar dat lijkt niet te werken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
Toevoeging op 21/08/2011 16:03:54:
Heb je ervaring met JS en JQuery
ja, maar heb geen idee hoe ik dit zou moeten doen
bump
Maar goed. Roepen dat er iets fout gaat helpt natuurlijk niet, want _wat_ gaat er fout. Geef bijvoorbeeld een foutmelding die in de debug-console van je browser staat.
Wat ik gok dat er fout gaat: de pagina die je opent via AJAX geeft geen JSON als resultaat.
Gewijzigd op 22/08/2011 23:29:21 door Elwin - Fratsloos
Er zijn dus ook geen errors, anders had ik die wel gepost :)
Gewijzigd op 22/08/2011 23:31:24 door Vincent Huisman
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Javascript:
function CheckAndSend(f) {
var isError = false;
var errMsg = "";
var el = document.getElementById("errMsg");
el.style.visibility = "hidden";
if (f.elements["username"].value == "") {
isError = true;
errMsg = "Je moet een gebruikersnaam invullen!";
}
if (f.elements["wachtwoord"].value == "") {
if (isError) {
errMsg += "<br />"
}
errMsg += "Je moet een wachtwoord invullen";
isError = true;
}
if (isError) {
el.innerHTML = errMsg;
el.style.visibility = "visible";
}
else {
var s = "";
for (i = 0; i < f.elements.length; i++) {
if (f.elements[i].value != "") {
s += f.elements[i].name + "=" + encodeURI(f.elements[i].value);
if (i < f.elements.length - 1) { s += "&" }
}
}
doc = getHTTPObject();
doc.onreadystatechange = function(){
if (doc.readyState == 4 && doc.status==200) {
s = doc.responseText;
xa = s.indexOf("errMsg");
if (xa > -1)
document.getElementById("errMsg").innerHTML = s;
else
AjaxPage(s, f.parentNode.id);
}
}
doc.open("POST", "/include/login.php", true);
doc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
doc.send(s);
}
}
PHP:
<?php
..... //de sql etc.
if (fout)
echo '<errMsg>Foutmelding</errMsg>';
else
echo '(link)";
?>
function CheckAndSend(f) {
var isError = false;
var errMsg = "";
var el = document.getElementById("errMsg");
el.style.visibility = "hidden";
if (f.elements["username"].value == "") {
isError = true;
errMsg = "Je moet een gebruikersnaam invullen!";
}
if (f.elements["wachtwoord"].value == "") {
if (isError) {
errMsg += "<br />"
}
errMsg += "Je moet een wachtwoord invullen";
isError = true;
}
if (isError) {
el.innerHTML = errMsg;
el.style.visibility = "visible";
}
else {
var s = "";
for (i = 0; i < f.elements.length; i++) {
if (f.elements[i].value != "") {
s += f.elements[i].name + "=" + encodeURI(f.elements[i].value);
if (i < f.elements.length - 1) { s += "&" }
}
}
doc = getHTTPObject();
doc.onreadystatechange = function(){
if (doc.readyState == 4 && doc.status==200) {
s = doc.responseText;
xa = s.indexOf("errMsg");
if (xa > -1)
document.getElementById("errMsg").innerHTML = s;
else
AjaxPage(s, f.parentNode.id);
}
}
doc.open("POST", "/include/login.php", true);
doc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
doc.send(s);
}
}
PHP:
<?php
..... //de sql etc.
if (fout)
echo '<errMsg>Foutmelding</errMsg>';
else
echo '(link)";
?>
getHttpObject(retourneerd XMLHttpRequest of ActiveX) en AjaxPage(laad Ajax content) zijn functies die je zelf moet toevoegen!
Gewijzigd op 23/08/2011 11:13:47 door Ger van Steenderen
denk het niet, het gaat mij puur om het doorsturen. ik doe vanaf pagina 1 een request naar pagina 2, en de gebruiker moet doorgestuurd worden. Alleen mag de gebruiker de url niet kunnen veranderen. Daarom dacht ik aan een header location op pagina 2, alleen werkt dat niet
Probeer om de link door te sturen vanuit php, en in javascript naar de waarde van deze variabele door te sturen.
Maar waarom dan AJAX?
Imo een beetje overbodig.
Maar goed, het is ook niet zo moeilijk, je echoed vanuit je phpscript de url (niets anders!) en het Javascript zet top.window.href.location = doc.responseText
omdat ik met een chat bezig ben en ik wil dat inactieve personen uitloggen. maar een gebruiker moet dus niet even de javascript aanpassen en dan altijd inactief kunnen blijven. maar ik heb al een idee