Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: нужна помощь с ajax
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » нужна помощь с ajax

Страниц (1): [1]
 

1. Дима - 07 Июня, 2011 - 19:04:56 - перейти к сообщению
Здравствуйте, пытаюсь переделать добавление сообщения в базу с php на ajax
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function doLoad(url, strParams)
  3. {
  4.     var xmlhttp = getXmlHttp();
  5. //кроссбраузерный метод Создания объекта запроса XMLHttpRequest.
  6. //саму функцию не показываю, рабачая, проверял
  7.     var path = url;
  8.     xmlhttp.onreadystatechange = function()
  9.     {
  10.         if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
  11.         {
  12.             alert(path + strParams);
  13.         }
  14.     }
  15.     xmlhttp.open('post', path, true);
  16.     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  17.     xmlhttp.send(strParams);
  18. }
  19.  

функция вызывается по onclick submita формы. В strParams измененяю текущий урл, прибавляю к последнему параметру + 1, но после отправки формы урл остается без изменений.
2. DeepVarvar - 07 Июня, 2011 - 19:19:27 - перейти к сообщению
http://xmlhttprequest[dot]ru/
Дима пишет:
прибавляю к последнему параметру + 1

Дима пишет:
path + strParams

строка + число = дрисня...
(Добавление)
Или дайте больше кода
3. Дима - 07 Июня, 2011 - 22:36:36 - перейти к сообщению
DeepVarvar, я ошибся не + 1, а = 1, последнему параметру я присваиваю 1. alert(path + strParams); срабатывает, значит ответ с сервера приходит. Вопрос в том почему урл не изменяется, насколько я знаю с методом отправки пост параматры передаются в send().
4. DeepVarvar - 08 Июня, 2011 - 00:19:37 - перейти к сообщению
Потому, что вы делаете алерт суммы, но не суммируете.
5. Viper - 08 Июня, 2011 - 07:22:28 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. var summ = path + strParams;
  2. alert(summ);
6. Дима - 08 Июня, 2011 - 08:27:52 - перейти к сообщению
я вот подумал какая разница что в этом алерте, главное что он срабатывает, а значит ответ с сервера приходит, волнует что урл не меняется и сообщение появляется на странице только после перезагрузки. Сделал тестовый пример, поместил все в один файл и php и js, создал базу с одной таблицей все работает как часы. После добавления сообщения в конце урл появляется знак #, и что я только не вставлял как параметр в send() и null и какие-то другие строковые параметры в адресной строке ничего не меняется. Метод передачи данных выбрал тот-же пост. В урл вообще можно что-то изменить?
7. Viper - 08 Июня, 2011 - 11:32:19 - перейти к сообщению
Дима конечно можно. просто то что идет после # можно изменить средствами JS на стороне клиента, а то что до него только с перезагрузкой страницы.
8. Дима - 08 Июня, 2011 - 15:05:47 - перейти к сообщению
Viper, как это сделать? В моем не тестовом примере значка # в урл вообще нет, что вообще он означает?
9. Viper - 09 Июня, 2011 - 07:11:33 - перейти к сообщению
Дима # это якорь. Т.е. при нажатии на <a href="#test">goto</a> браузер прокрутит текущий документ до места где встречается <a name="test"></a>.

Также эти якоря можно использовать для передачи параметров, к примеру как сделано на translate.google.com.

В принципе есть плагин для jquery звется url parser. ИЗ родного JS доступ к тому что после # можно получить через document.location.hash

Также # может появлятся кода используется ajax взаимодействие при нажатии на некую ссылку в которой href="#". При этом будет добавлятся при нажатии на неё(ссылку) # в урл без параметров. ЧТобы избежать этого обычно пишут href="javascript:void(0);" либо return false в функции обрабатывающей событие для ссылки.
10. Дима - 12 Июня, 2011 - 23:01:21 - перейти к сообщению
Viper, как средствами пхп получить доступ к параметрам, которые передаются в send(), например send('foo='+bar); Как получить значение foo, пробовал echo $foo; echo $_REQUEST["foo"]; Или ссылку на какой-то ликбез на эту тему.
11. Дима - 13 Июня, 2011 - 11:04:35 - перейти к сообщению
Кроме отзывов на товар организовал ответы на отзывы, как это работает: в каждом отзыве под датой есть ссылка, нажав на которую сервер получает новый параметр с присвоенным ему номером этого сообщения и одновременно появляется форма ввода текста. В базе ответ на собщение получает его номер, а сообщение на которое ответили и те у которых номер больше прибавляю 1 и вывожу в обратном порядке, самое свежее сообщение всегда первое. Нажав на сабмит включается перенаправление, чтобы включить метод вывода сообщений еще раз(чтобы показать только что добавленное) и прячу форму. Пытаюсь все это заменить аджаксом, сообщения уже добавляются, но с ответами пока тихо. Есть функция, которая присваивает параметры и их значения в переменную и делает форму видимой:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function showFormOpAnswer(id, idOp)
  3. {
  4.     strParams = 'proId='+ id +'&op&answer='+idOp;
  5.     var f = document.getElementById('formOp');
  6.     f.style.display = 'block';
  7. }
  8.  

id - id конкретного товара
idOp - id отзыва для ответа на него
вызываю:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <A href="javascript: void(0)" onClick="showFormOpAnswer('.$id.', '.$resId['orderId'].');">Ответить:</a>
  3.  

strParams для того, чтобы передать её в метод xmlhttp.send(strParams); аджакс функции отправки запроса и получения ответа
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function doLoad(url)
  3. {
  4.     var xmlhttp = getXmlHttp();
  5.     var path = url;
  6.     xmlhttp.open('post', path, true);
  7.     xmlhttp.onreadystatechange = function()
  8.     {
  9.         if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
  10.         {
  11.             alert(xmlhttp.statusText);
  12.         }
  13.     }
  14.     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  15.     xmlhttp.send(strParams);
  16. }
  17.  

её вызов по онклик сабмита формы. Параметр "<? echo $_SERVER['PHP_SELF']; ?>"
Как с аджаксом передать нажатием на ссылку этот параметр(id сообщения)?

 

Powered by ExBB FM 1.0 RC1