Post Ajax函数返回真或假
Post Ajax function to return true or false
我试图获得一个Ajax函数返回true或false(这是一种验证函数,从另一个函数调用)。所以另一个函数需要从这个函数中得到一个真或假的值这样它就知道下一步该怎么做
功能如下:
function validateLogin( uid, pass, i ){
var uvalue = uid.value;
var pvalue = pass.value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","validateCheck.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if( xmlhttp.responseText == "Error" )
return false;
else if( xmlhttp.responseText == "Yes" )
return a;
else if( xmlhttp.responseText == 1 )
return false;
else if( xmlhttp.responseText == 2 )
return false;
else if( xmlhttp.responseText == 3 )
return false;
else if( xmlhttp.responseText == 4 )
return false;
else if( xmlhttp.responseText == 5 )
return false;
else
return true;
}
}
xmlhttp.send("uid="+uvalue+"&pass="+pvalue);
}
调用函数为:
function validateForm(i){
var uid = document.myform1.username;
var pass = document.myform1.password;
if( validateLogin(uid,pass,i) )
alert(validateLogin(uid,pass,i));
}
但是validateLogin函数没有返回任何东西给调用函数(validateForm)
使用调
function validateLogin(uid, pass, i, callback) {
var uvalue = uid.value;
var pvalue = pass.value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST", "validateCheck.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
if (xmlhttp.responseText == "Error")
callback(false);
else if (xmlhttp.responseText == "Yes")
callback(a);
else if (xmlhttp.responseText >= 1 && xmlhttp.responseText <= 5)
callback(true);
else
callback(true);
}
};
xmlhttp.send("uid=" + uvalue + "&pass=" + pvalue);
}
并以这种方式调用函数
function validateForm(i){
var uid = document.myform1.username;
var pass = document.myform1.password;
validateLogin(uid, pass, i, function (resp) {
if (resp) {
alert(resp);
}
});
}
function validateLogin(uid, pass, i) {
var result = jQuery.Deferred();
...
if (xmlhttp.responseText == "Error")
result.value = false;
else if (xmlhttp.responseText == "Yes")
result.value = a;
...
xmlhttp.send("uid=" + uvalue + "&pass=" + pvalue);
return result.value;
}
这个函数不会警告任何东西。当你的函数执行完成后,你的ajax进程仍然在后台工作,你的函数不返回任何东西,if条件将失败。
如果你想要任何验证,那么你必须在ajax响应中放置验证
- 你可以同步调用它,如果你需要下一个操作的结果:
xmlhttp.open("后","validateCheck.php",假),
-
给异步函数一个回调来处理结果
-
查看jQuery延迟对象
-
将全局变量或html元素设置为返回值
…
相关文章:
- jquery返回ajax响应和用户定义的变量到函数
- 从回调函数返回 AJAX 结果
- 无法从jquery中的函数返回ajax responseText
- 为什么我不能返回 $.ajax 结果,但可以返回 $http.post 的结果
- PHP 未正确返回 AJAX 调用的 JSON
- 通过 JS 模块模式返回 ajax 响应
- 通过回调返回 AJAX
- jQuery filter() 和 find() 都返回 AJAX 响应的错误
- 从单独的文件返回 AJAX 响应文本
- JQuery从c#函数返回ajax列表
- 如何使用确认警报并返回AJAX承诺
- 从python向jquery返回ajax错误
- 在JQuery中查找PHP返回AJAX的错误
- 在返回AJAX响应之前阻止web浏览器关闭
- javascript通过自身函数返回ajax请求结果
- 如何让 JavaScript 函数返回 Ajax 结果
- 从函数返回ajax请求值
- 未返回Ajax值
- 返回Ajax -错误- Symfony2
- 从自定义函数返回ajax响应作为html到骨干视图