ajax和php验证

时间:2011-03-16 01:44:09

标签: php javascript ajax

我的疑问是,当我把document.getElementById('myPassword').value);放在函数validarDados中时它对应于valor,然后我需要另一个varriable,但是valor1不能正常工作,结果是echo(echo) $ valor1;)未定义(echo $ valor;工作正常)

<input type="password"  id="myPassword"  name="password" class="text" onblur="validarDados('myPassword', document.getElementById('myPassword').value);" />

<input type="password" id="passwordMatch" name="passwordMatch" class="text"  onblur="validarDados('passwordMatch', document.getElementById('passwordMatch').value);" />

AJAX

var req;

function validarDados(campo, valor, valor1) {
    if(window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    }

    else if(window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }


    var url = "ajax/validacao.php?campo="+campo+"&valor="+valor +"&valor1="+valor1;

    req.open("Get", url, true); 

    req.onreadystatechange = function() {

        if(req.readyState == 1) {
            document.getElementById('campo_' + campo + '').innerHTML = '<font color="gray">Verificando...</font>';
        }

        if(req.readyState == 4 && req.status == 200) {

            var resposta = req.responseText;

            document.getElementById('campo_'+ campo +'').innerHTML = resposta;
        }
    }

    req.send(null);
}

在php文件中

$campo = $_GET['campo'];
$valor = $_GET['valor'];
$valor1 = $_GET['valor1'];

任何意识形态?

感谢

2 个答案:

答案 0 :(得分:1)

您可以尝试使用JQuery:http://api.jquery.com/jQuery.ajax

关于您提供的代码,在通过ajax提交之前,valor1已经是未定义的。你的php中的回声是否未定义。

尝试在将valor1传递给ajax之前提醒它,这样你就会发现它是未定义的。

之所以未定义,是因为你的onblur =“(validarDados())”只有2个参数。要解决此问题,请添加第三个参数:

<input type="password"  id="myPassword"  name="password" class="text" onblur="validarDados('myPassword', this.value,'your3rdparam');" />

注意:我使用this.value而不是document.getElementById('myPassword')。value来节省空间,它是否与您使用的id具有相同的值。

您还可以尝试删除函数validarDados()中的第三个参数valor1。然后在该方法中创建一个变量valor1并指定其值。我想知道valor1的目的是什么?无论如何,我希望这可以成为一种帮助。

答案 1 :(得分:0)

您应该使用Prototype:http://www.prototypejs.org/

然后,使用Ajax.Request或Ajax.Updater,您只需要向PHP发送参数“login”和“password”。

new Ajax.Updater({success: "DIV ID HERE"}, "PROCESS.PHP", {
parameters: "login="+login+"&password="+password, method: "post"
});

至于你的代码,这里有一个错误:
<input type="password" id="myPassword" name="password" class="text" onblur="validarDados('myPassword', document.getElementById('myPassword').value);" />
缺少第3个参数“valor1”。