Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   XmlHttpRequest (https://javascript.ru/forum/server/30511-xmlhttprequest.html)

Hekumok 07.08.2012 01:48

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?

devote 07.08.2012 02:13

ужос.. все ни так делаете.. поддерживать ИЕ6 нет смысла, статус нужно проверять не только 200, но и другие тоже.. Если браузер берет страницу например из кеша, то и статус вернет 304 вроде.. точно не помню.. но не 200 точно.

Hekumok 07.08.2012 02:21

Цитата:

Сообщение от devote (Сообщение 195166)
ужос.. все ни так делаете..

читал всё тут и делал, как там написано...
Цитата:

Сообщение от devote (Сообщение 195166)
поддерживать ИЕ6 нет смысла

Я его и "не поддерживаю" - мне на него срать, как и на всех остальных ишаков, просто делал, как написано на том сайте (см. выше)
Цитата:

Сообщение от devote (Сообщение 195166)
статус нужно проверять не только 200, но и другие тоже.. Если браузер берет страницу например из кеша, то и статус вернет 304 вроде.. точно не помню.. но не 200 точно.

То есть
if (xmlhttp.status == 200 || xmlhttp.status == 304) ...
?!

Deff 07.08.2012 02:25

devote,
Ксать я проверял - не обнаружил я кода 304 в ответе ти мне говорил -(хотя у меня доступа к серву нет, но тестил и картинки (уж явно должны кешироваться) -

devote 07.08.2012 02:29

Hekumok,
я уже не однократно приводил пример того как нужно делать запросы аякс, без всяких там ишаков, например тут

devote 07.08.2012 02:30

Цитата:

Сообщение от Deff
не обнаружил я кода 304 в ответе ти мне говорил

ну какраз таки на картинка оно реже всего.. тут надо на простых GET запросах тестить

Deff 07.08.2012 02:31

:) У мну мой код(из той темы) работает везде - конфликтов, не смотря на замечания - не наблюдаю( тестил спецом

Deff 07.08.2012 02:32

Цитата:

Сообщение от devote
ут надо на простых GET запросах тестить

devote,
Хм... я просто не наю где тестить - у меня нет кешированных get

Hekumok 07.08.2012 02:35

Цитата:

Сообщение от devote (Сообщение 195173)
Hekumok,
я уже не однократно приводил пример того как нужно делать запросы аякс, без всяких там ишаков, например тут

Ясно, спасибо, теперь буду писать так, и то есть вот этого
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 ;
} ;

вабще не нужно?
И да, это ведь ничего не изменит в плане работы скрипта - работать-то он ведь всё равно не будет

devote 07.08.2012 02:37

Цитата:

Сообщение от Deff
У мну мой код(из той темы) работает везде - конфликтов, не смотря на замечания - не наблюдаю( тестил спецом

ну не знаю как был произведен тест, но статусы такие:

200 OK
304 Not Modified

все что в диапазоне двухсот, являются корректными запросами, с небольшими тонкостями которые может прислать сервер. Например статус 202 "Accepted", 203 "Non-Authoritative Information" и т.д.

В опере откройте отладчик, в разделе сеть можно увидеть какие статусы у запросов.


Часовой пояс GMT +3, время: 03:10.