我有一个Ajax脚本,允许我检查表单而不刷新页面。但我希望它检查字段是否尚未完成,但如果字段已完成,我想将用户发送到新页面。
我不知道我怎么做到这一点。这是Ajax脚本:
function pass()
{
// Real Browsers (chrome)
if (window.XMLHttpRequest)
{
xhr = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//Store data
var email = document.getElementById('email').value;
var firstname = document.getElementById('firstname').value;
var surname = document.getElementById('surname').value;
var address1 = document.getElementById('address1').value;
var address2 = document.getElementById('address2').value;
var postcode = document.getElementById('postcode').value;
//Open POST location
xhr.open("POST","addUserSeminar.php");
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
//Make object to store all data
var obj = {email: email, firstname: firstname, surname: surname, address1: address1, address2: address2, postcode: postcode};
//Encode the data with JSON and send it to the server
xhr.send("data=" + JSON.stringify(obj));
//Check return state and change "myDiv"
xhr.onreadystatechange=function()
{
if (xhr.readyState==4)
{
document.getElementById("settingsDiv").innerHTML = xhr.responseText;
}
}
//Return false so form doesn't submit
return false;
}
它将数据发送到php文件,我在那里检查框是否已填满,如果不是,我每条都会收到“找不到名字”的消息。但如果所有数据都已发布,那么我将记录添加到我的数据库中,然后返回true。
我怎么能在我的Ajax脚本中获取该返回值,以便我可以测试它是否为true,如果是这样,则转发到新页面。
感谢您的时间。
答案 0 :(得分:1)
从服务器返回一些声明已完成的内容,并在if语句中使用xhr.responseText读取它。
if( xhr.responseText.indexOf("forward to next page") > -1 ){
//forward
} else {
//show error message
}
如果您使用JSON对象返回错误和成功消息会更好,因为您可以检查要执行的对象。
答案 1 :(得分:1)
在你的onreadystatechanged中,readyState == 4 if block ...
if(xhr.responseText.indexOf("SUCCESS") >= 0) {
window.location.href = NEW_URI;
} else {
document.getElementById("settingsDiv").innerHTML = xhr.responseText;
}
让您的PHP脚本返回一个唯一的字符串,用空白字段表示SUCCESS与FAILURE。
答案 2 :(得分:0)
成功时从服务器端返回字符串“TRUE”
PHP代码
if($valid_inputs) { // all input fields are valid
echo "TRUE";
} else {
echo "FALSE";
}
客户端JS代码
if (xhr.readyState==4)
{
if (xhr.responseText.indexOf("TRUE") > -1) {
window.location = "redirecturl.php"; //redirect url
}
}