Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Передача переменной из js в php, посредством ajax (https://javascript.ru/forum/server/27971-peredacha-peremennojj-iz-js-v-php-posredstvom-ajax.html)

9xakep 02.05.2012 14:50

micscr,
весь прикол в том, что он там всегда был О-о

А что подозрительного?

micscr 02.05.2012 15:05

Смотри как объект этот создается в справочнике:
http://javascript.ru/ajax/intro

ava is false у тебя не при посте же?

9xakep 02.05.2012 15:14

micscr,
В справочнике создает кроссбраузерный метод для осла, остальные браузеры нормально поддерживают ajax, и что бы открыть запрос, достаточно написать: var request = New XMLHttpRequest
1)
<input type='text' id='avatar'>
<input type='button' onclick='ava()' value='Установить аватар'>
<script>
function ava() {
var ava = document.getElementById('avatar').value
ava = encodeURIComponent(ava)
var r = new XMLHttpRequest; // создаем запрос
/* нам не нужно в js использовать ответ сервера, нам нужно просто послать, поэтому мы пропускаем: r.onredy....if(readyStage==4 && status == 200) */
r.open('POST', 'login.php', true) // открываем
r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // устанавливаем заголовок
r.send('ava='+ava) // что посылаем
}
</script>

2)
Цитата:

Сообщение от micscr
ava is false у тебя не при посте же?

да
===========
сейчас сделал открыл запрос тем методом, что в справочнике, ничего не изменилось

micscr 02.05.2012 15:38

Цитата:

да
не при посте она естественно и будет false.
А при посте будет $_POST['ava'], т.е. все должно работать.
Если не работает то сразу надо искать ошибку в запросе
mysql_query($query) or die('Error:' . mysql_error());

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

9xakep 02.05.2012 15:54

micscr,
ошибка вот в чем:
if ($ava) {
echo 'ava is '.$ava;
echo $row['name'].'<hr>'.$row['pass'];
$query = "UPDATE `users` SET `avatar`='%s' WHERE `name`='%s' AND `pass`='%s'";
$query = sprintf($query, mysql_real_escape_string($ava), mysql_real_escape_string($row['name']), mysql_real_escape_string($row['pass']));
mysql_query($query) or die('Error:' . mysql_error());
}

То есть при загрузки страницы, он по if проходит, и больше не затрагивает, то есть что-тов этом роде:
<input  type='text' id='text'>
<script>
document.getElementById('text').value == 1 ? alert('true') : alert('false')
</script>

То есть он не ждет пока там что-нибудь появиться, единственным решением, я вижу поставить это все в ф-ию и при post отправки ее вызывать?

micscr 02.05.2012 17:13

Цитата:

micscr,
ошибка вот в чем:
и в чем там ошибка? :blink:

Я тебя не понимаю, мне кажется тебе надо сначала поболее основы подтянуть.

9xakep 02.05.2012 19:40

micscr,
Ну вот пример из js:
<input type='text' id='a'>
<script>
var v = document.getElementById('a').value
if( v == 'asd' ) {
alert('something')
} else {
alert('else')
}
</script>

У нас никогда не будет if, почему, объяснять думаю не стоит, тоже у нас и в php, теперь понял, в чем проблема?

Serg_pnz 02.05.2012 21:44

Вообще не осиляю понять в чем проблема.
Дать юзеру аяксом загрузить авку? ну и грузите файл на здоровье, но! прежде, чем принять файл (да собственно любые другие данные) проверьте юзер ли отправил эти данные или нет? Сделать это можно, например, через сессии пхп.
9xakep, чего-то Вы себя перемудряете, имхо.

9xakep 02.05.2012 21:50

Serg_pnz,
так-с...мне вообще вот вся задача:
1) Заходит юзер со своим логином и паролем (готово, пост отправка формы, с перезагрузкой страницы)
2) В случае удачного захода появляется текстовое поле, куда надо вставить текст(ссылку авы) (как видишь, пока не выходит)
3) После эта ссылка добавляется в нужный столбец (пхп работает(в нужную строку добавляется) Но вот с аяксом проблемы)
-------------
В общем завтра попробую с пустой страницы потренироваться( текстовое поле, нужно инфо оттуда отправить в БД с помощью ajax)

Serg_pnz 03.05.2012 10:14

Ну я так и подумал, что проблема с поддержанием аутентификации.
Тут или на сессиях или куках надо делать.
И да - посмотреть бы все файлы.
На jquery сделал бы подобное на раз-два (ну больше я пхп, нежели js-программист)


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