Проблема проверки формы Ajax - PullRequest
0 голосов
/ 27 января 2010

У меня почти не работает проверка формы, но я не могу решить эту последнюю проблему.

Я пытаюсь отправить обратно сообщения об ошибках и расположить их в отдельном элементе рядом с соответствующими полями формы.

У меня есть сообщение об ошибке, возвращаемое в его собственном div, но когда я пытаюсь отправить несколько сообщений назад, ничего не происходит, какие-либо мысли?

Вот большая часть моего аякса

function regForm(thisform) { //Reg user form check
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
 alert ("Browser does not support HTTP Request");
 return;
 }
 var formdata = "";
 formdata = "lname=" + thisform.elements['lname'].value + "&fname=" + thisform.elements['fname'].value + "&email=" + thisform.elements['email'].value + "&username=" + thisform.elements['username'].value + "&pass=" + thisform.elements['pass'].value + "&pass2=" + thisform.elements['pass2'].value; //send the data through the url - frist is the name i want to call it... second grad the content from the form using its id
    xmlHttp.onreadystatechange=formSubmitted;
    xmlHttp.open("POST", "adduser.php",true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", formdata.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(formdata);
    return false;
}

function formSubmitted() {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
    xmlDoc=xmlHttp.responseXML;
//document.getElementById("feedback").innerHTML = xmlHttp.responseText;
document.getElementById("feedback1").innerHTML= xmlDoc.getElementsByTagName("lname")[0].childNodes[0].nodeValue;
document.getElementById("feedback2").innerHTML= xmlDoc.getElementsByTagName("fname")[0].childNodes[0].nodeValue;

    }
}

и вот моя простая страница adduser.php до сих пор

<?php
header('Content-Type: text/xml');

$lname = mysql_real_escape_string($_POST['lname']);
$fname = mysql_real_escape_string($_POST['fname']);

if($lname == NULL) {
echo "<lname>NEED TO FILL</lname>";
}

//if($fname == NULL) {
//echo "<fname>NEED TO FILL</fname>";
//}
else {
    echo "<lname> </lname>";
    //echo "<fname> </fname>";
}
?>

Как вы можете видеть, у меня есть информация о fname, которая закомментирована прямо сейчас, и мой обмен сообщениями работает для lname, но как только я раскомментирую материал fname в надежде отправить сообщение как для lname, так и для fname, ничего не происходит, я не не понимаю почему.

Любое понимание было бы большой помощью! Спасибо.

Ответы [ 3 ]

0 голосов
/ 27 января 2010

Попробуйте использовать только один оператор echo в самом конце скрипта (поэтому используйте переменную для объединения всех ваших сообщений об ошибках и только выводите ее в самом конце).

Кроме того, я бы настоятельно рекомендовал использовать библиотеку JS (например, jQuery) для всех ваших потребностей ajax - это сделает вашу жизнь намного проще

0 голосов
/ 28 января 2010

хорошо, я понял это и, как всегда, было глупо, почему это не сработало.

на моей странице adduser.php мне просто нужно обернуть сообщение об ошибке в тег xml.

echo "<errors>";

//error content

echo "</errors>";
0 голосов
/ 27 января 2010

Я не совсем понимаю, что вы подразумеваете под «возвращением в собственный div», но вы знаете, что идентификатор элемента должен быть уникальным в документе? Не бывает, что вы получаете два DIV с одинаковым идентификатором, если возвращается ошибка DIV?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...