我正在使用AJAX将用户注册到服务。 以下是提交按钮的标记。
<input type="button" id="register" name="register" class="btn btn-success" onclick="registration();" value="Register"/>
以下是registration()函数和其他javascript -
function registration()
{
var name = document.getElementById("regname").value;
var email = document.getElementById("regemail").value;
var pass = document.getElementById("regpassword").value;
var pass2 = document.getElementById("regreenterpassword").value;
var tagline = document.getElementById("tagline").value;
registerOnDB();
};
var xmlHttpReg = createXmlHttpRequestObject(); //Calling the function to vaidate input credentials
function createXmlHttpRequestObject()
{
var xmlHttpReg;
if(window.ActiveXObject) //If user is using internet Explorer
{
try
{
xmlHttpReg = new ActiveXObject("Microsoft.xmlHttp");
}
catch(e)
{
xmlHttpReg=false;
}
}
else //If user is NOT using internet Explorer but any other browser
{
try
{
xmlHttpReg = new XMLHttpRequest();
}
catch(e)
{
xmlHttpReg=false;
}
}
if(!xmlHttpReg) //If Object can not be initialized.
{
alert("Can not create object");
}
else
{
return xmlHttpReg;
}
}
function registerOnDB()
{
if(xmlHttpReg.readyState==0 || xmlHttpReg.readyState==4) //If object state is either 0 OR 4 i.e. object not engaged otherwise.
{
var name = encodeURIComponent(document.getElementById("regname").value);
var email = encodeURIComponent(document.getElementById("regemail").value);
var pass = encodeURIComponent(document.getElementById("regpassword").value);
var tagline = encodeURIComponent(document.getElementById("tagline").value);
var parameters="name="+name+"&email="+email+"&pass="+pass+"&tagline="+tagline+"&loggedin=true";
var url = "http://localhost/dashboard/x/php/register.php?"+parameters; //Sending Data to php script for validation
xmlHttpReg.open("GET",url,true); //Preparing to send request
xmlHttpReg.onreadystatechange = handleServerResponseReg; //Handling response that will come from php script
xmlHttpReg.send(); //sending values to php script
}
else
{
setTimeout('registerOnDB()', 1000); //If reasyState is NOT 0 or 4 then repeat then wait and check again after 1 second.
}
}
function handleServerResponseReg()
{
if(xmlHttpReg.readyState==4||xmlHttpReg.readyState==0) //If object state is either 0 OR 4 i.e. object not engaged otherwise.
{
if(xmlHttpReg.status==200) //status 200 means everything went OK
{
document.getElementById("errorpromptregister").innerHTML = xmlHttpReg.responseText; //Putting out message received from XML on the screen at a div whose ID is errorprompt.
}
else
{
alert("xmlHttp.status!=200");
}
}
}
以下是我的php文件的片段 -
if(mysql_query("INSERT INTO user_tbl(name, tagline, email, password, salt, otp) VALUES ('$name','$tagline','$email','$password','$salt', '$otp')"))
{
session_start();
$_SESSION['email']=$email;
header("Location : otp.php");
exit();
}
现在的问题是,即使我的php脚本能够写入数据库,它也不会重定向到otp.php 即标题功能不起作用。 请帮我解决一下如何从我的php脚本重定向到otp.php
P.S。 - 该按钮位于引导模式上。
答案 0 :(得分:0)
重定向AJAX请求不会更改发送请求的页面。重定向发生在之前页面被发送到客户端,但如果客户端发送AJAX请求,显然他们已经发送了页面。
您可以做的是将重定向网址作为AJAX响应返回给客户端,然后使用Javascript更改页面,例如:
var ajaxResponse =...
...
location.href = ajaxResponse.responseText();
答案 1 :(得分:0)
而不是使用header()
服务器端,在您的ajax成功回调中使用location.replace
重定向到otp.php
答案 2 :(得分:0)
正如其他人所说,您正在重定向请求,而不是当前页面。所以关于php代码的成功,返回类似这样的东西
echo json_encode( array( 'redirect' => 'http://your location' ));
然后在ajax成功中从数据中获取redirect
并简单地执行
$.post('location', {requestdata}, function(data){
if( data.hasOwnProperty( 'redirect' ) ){
window.location.href = data.redirect;
}
});
通过这种方式,您可以告诉调用页面将客户端发送到的位置。