XmlHttpRequest
Объясните, позязя, что я делаю не так в этом коде:
<html><head><title>Регистрация</title> <meta http-equiv="Content-Type" Content="text/html; Charset=Windows-1251"> <script> function getXmlHttp() { var xmlhttp ; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") ; } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ; } catch (E) { xmlhttp = false ; } ; } ; if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest() ; } ; return xmlhttp ; } ; function registration() { var xmlhttp = getXmlHttp() ; xmlhttp.open("POST", "save_user.php", true) ; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) { document.write('Loading...') ; } else { if (xmlhttp.status == 200) document.write(xmlhttp.responseText) ; } ; } ; var params = 'name='+encodeURIComponent(name)+'&password='+encodeURIComponent(password) ; xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ; xmlhttp.send(params) ; } ; </script> </head><body> <h2>Регистрация</h2> <form method="post" enctype="application/x-www-form-urlencoded" onsubmit="registration()"><p> <label>Ваш логин<br></label> <input name="login" type="text" size="15" maxlength="15"></p> <p><label>Ваш пароль:<br></label> <input name="password" type="password" size="15" maxlength="15"></p> <p> <input type="submit" name="submit" value="Зарегистрироваться"> </p></form></body></html> Когда жму на сабмит, просто появляется значок загрузки вверху браузера, и нифига не происходит... Зы: нужно содержание странички save_user.php? |
ужос.. все ни так делаете.. поддерживать ИЕ6 нет смысла, статус нужно проверять не только 200, но и другие тоже.. Если браузер берет страницу например из кеша, то и статус вернет 304 вроде.. точно не помню.. но не 200 точно.
|
Цитата:
Цитата:
Цитата:
if (xmlhttp.status == 200 || xmlhttp.status == 304) ...?! |
devote,
Ксать я проверял - не обнаружил я кода 304 в ответе ти мне говорил -(хотя у меня доступа к серву нет, но тестил и картинки (уж явно должны кешироваться) - |
Hekumok,
я уже не однократно приводил пример того как нужно делать запросы аякс, без всяких там ишаков, например тут |
Цитата:
|
:) У мну мой код(из той темы) работает везде - конфликтов, не смотря на замечания - не наблюдаю( тестил спецом
|
Цитата:
Хм... я просто не наю где тестить - у меня нет кешированных get |
Цитата:
function getXmlHttp() { var xmlhttp ; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") ; } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ; } catch (E) { xmlhttp = false ; } ; } ; if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest() ; } ; return xmlhttp ; } ; вабще не нужно? И да, это ведь ничего не изменит в плане работы скрипта - работать-то он ведь всё равно не будет |
Цитата:
200 OK 304 Not Modified все что в диапазоне двухсот, являются корректными запросами, с небольшими тонкостями которые может прислать сервер. Например статус 202 "Accepted", 203 "Non-Authoritative Information" и т.д. В опере откройте отладчик, в разделе сеть можно увидеть какие статусы у запросов. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
все эти статусы являются корректными:
200 "OK" 201 "Created" 202 "Accepted" 203 "Non-Authoritative Information" 204 "No Content" 205 "Reset Content" 206 "Partial Content" 304 "Not Modified" |
devote,
Воть тут на сайте проскакивает 304 в закрытых темах:-E |
Блин, теперь тупо перезагружает страницу >.<
|
Цитата:
|
Цитата:
|
<!DOCTYPE html> <html> <head> <title>Регистрация</title> <meta http-equiv="Content-Type" Content="text/html; Charset=Windows-1251"> <script type="text/javascript"> function registration() { var name = document.getElementsByName( 'login' )[0].value; var password = document.getElementsByName( 'password' )[0].value; var xmlhttp = new XMLHttpRequest(); xmlhttp.open( "POST", "save_user.php", true ); xmlhttp.onreadystatechange = function(){ if ( xmlhttp.readyState == 4 ) { if ( xmlhttp.status >= 200 && xmlhttp.status < 300 || xmlhttp.status === 304 ) { document.body.appendChild( document.createTextNode( xmlhttp.responseText ) ) ; } } else { document.body.appendChild(document.createTextNode( 'Loading...' ) ) ; } } var params = 'name='+encodeURIComponent( name )+'&password='+encodeURIComponent( password ); xmlhttp.setRequestHeader( 'Content-Type','application/x-www-form-urlencoded' ); xmlhttp.send( params ); return false; } </script> </head> <body> <h2>Регистрация</h2> <form method="post" enctype="application/x-www-form-urlencoded" onsubmit="return registration()"> <p> <label>Ваш логин<br></label> <input name="login" type="text" size="15" maxlength="15"> </p> <p> <label>Ваш пароль:<br></label> <input name="password" type="password" size="15" maxlength="15"> </p> <p> <input type="submit" name="submit" value="Зарегистрироваться"> </p> </form> </body> </html> |
подправил код, у тебя переменные name и password ни откуда не брались
|
devote, спасибо))) ток мне терь придется с кодировками повозиться, а то мне крякозябры выводит
|
Цитата:
|
Цитата:
|
ну какую ты там юзаешь, прямо в начале файла после открывающего тега PHP пиши:
header( "Content-type: text/html; charset=utf-8" );или header( "Content-type: text/html; charset=windows-1251" ); |
devote, всё равно...блин, чо за фигня?!
|
ну что то ты делаешь не так.. попробуй создать файл .htaccess в корне сайта и пропиши в нем строчку:
AddDefaultCharset UTF-8ну или другую кодировку |
devote, огромное спасибо - это помогло =) только почему пишет: "Вы ввели не всю информацию, вернитесь назад и заполните все поля!" - хотя я и логин и пароль ввел?
|
Цитата:
|
devote, огромное вам спасибо - я нашел ошибку...и извините, я вас, наверно, уже достал своими глупыми вопросами, но есть еще один - у мну в бд при регистрации записывается id - так вот, когда я щас тестил этот код, то в бд записались 3 "пользователя" с айдишниками 1, 2 и 3, и если я сейчас очищу бд, то ведь при следующей регистрации в бд уже будет записан пользователь с id 4, а можно ли сделать, чтоб айдишники стали начисляться заново, то есть с 1?
|
ALTER TABLE `table` AUTO_INCREMENT = 7236где число 7236 номер индекса который получит новая запись. |
devote, наигромнейшее вам спасибо, вы столько времени на меня потратили - даже не знаю, чтобы я без вас делал! Еще раз - спасибо
|
Часовой пояс GMT +3, время: 12:21. |