2010-01-27 2 views
0

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

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

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

Вот большинство моих AJAX

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, ничего не происходит, я не понимаю, почему.

Любое понимание было бы большой помощью! Благодарю.

+0

вы должны кодировать значения параметров с помощью window.encodeURIComponent: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent –

ответ

0

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

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

echo "<errors>"; 

//error content 

echo "</errors>"; 
0

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

0

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

Кроме того, я бы очень настоятельно рекомендую использовать библиотеку JS (например, JQuery) для всех ваших потребностей АЯКСА - сделают вашу жизнь намного проще

Смежные вопросы