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 » PHP » Напишите за меня, пожалуйста » Ajax не коректно работает в Опере

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

1. taxi008 - 12 Декабря, 2011 - 19:48:58 - перейти к сообщению
Помогите пожалуйста. Есть форма с проверкой на наличие слова в базе. Обработчик формы на Ajax. Вроде все работает нормально. А в Опере при любом раскладе отрицательный результат.
CODE (javascript):
скопировать код в буфер обмена
  1. $.ajax({
  2.                         url: "testing.php",
  3.                         type: "GET",
  4.                         data: "name=" + name,
  5.                         cache: false,
  6.                         success: function(response){
  7.                                 if(response == "no"){
2. ams - 12 Декабря, 2011 - 20:12:44 - перейти к сообщению
Посмотри что в ответ приходит именно в опере. Похожее было, только наоборот Улыбка
3. taxi008 - 12 Декабря, 2011 - 20:33:23 - перейти к сообщению
В опере приходит ответ "Неверное слово". тоесть-
PHP:
скопировать код в буфер обмена
  1. if(@mysql_num_rows($query) <= 0){echo "no";}
  2.  if(mysql_num_rows($query) > 0){echo "yes";}

CODE (javascript):
скопировать код в буфер обмена
  1. success: function(response){
  2.                                 if(response == "no"){
  3.                                         $("#name").next().hide().text("Неверное слово").css("color","red").fadeIn(400);
  4.                                         $("#name").removeClass().addClass("inputRed");
  5.                                         nameStat = 0;
  6.                                 buttonOnAndOff();      
4. taxi008 - 12 Декабря, 2011 - 23:32:34 - перейти к сообщению
Может проблемма в кодировке?
5. Опоссум - 13 Декабря, 2011 - 07:33:00 - перейти к сообщению
Попробуй вывести Ajax`ом слово которое ты отправил на сервер, тогда поймешь дело в кодировке или нет.
6. taxi008 - 13 Декабря, 2011 - 12:26:42 - перейти к сообщению
А каким образом вывести слово?
Самое главное на сайте есть форма регистрации, точно по такому же сценарию. Разница только в html форме. Работает во всех браузерах.
7. tuareg - 13 Декабря, 2011 - 13:03:41 - перейти к сообщению
Попробуйте принудительно использовать encodeURIComponent
http://javascript[dot]ru/encodeURIComponent
8. taxi008 - 13 Декабря, 2011 - 14:33:25 - перейти к сообщению
Слово в базе хранилось на русском языке. Обработчик Ajax его не находил и выдавал " Неверное слово". Изменил само слово, написал его на английском. Обработчик на опере заработал коректно. Значит все дело в кодировке? Как можно исправить проблемму?
9. tuareg - 13 Декабря, 2011 - 14:40:54 - перейти к сообщению
Перекодировать в UTF-8 БД и все файлы. Или если это не возможно или что-то еще...
10. taxi008 - 13 Декабря, 2011 - 17:52:30 - перейти к сообщению
У Меня в bd кодировка windows-1251. Пытаюсь изменить кодировку запроса, вообще не работает.
11. tuareg - 13 Декабря, 2011 - 18:05:14 - перейти к сообщению
Вы получили переменную $_GET['name'].
PHP:
скопировать код в буфер обмена
  1.  
  2. $name=iconv("UTF-8","Ваша кодировка",$_GET['name']);
  3. /*Потом запрос*/
  4.  
12. taxi008 - 13 Декабря, 2011 - 18:23:08 - перейти к сообщению
Сделал все как Вы сказали.
PHP:
скопировать код в буфер обмена
  1. $name=iconv("UTF-8","Ваша кодировка",$_GET['name']);

На опере скрипт заработал коректно. А вот другие браузеры наоборот перестали работать.
Замкнутый круг. Что делать?
(Добавление)
Неужели нет решения проблеммы?
13. tuareg - 13 Декабря, 2011 - 19:38:25 - перейти к сообщению
Есть работают же сайты нормально.
Во-первых сделайте сами файлы в кодировке UTF-8.
Во-вторых После получения ответа от БД. делайте обратную перекодировку
PHP:
скопировать код в буфер обмена
  1.  
  2. $name=iconv("Ваша кодировка","UTF-8",$_GET['name']);
  3.  

P.S На будущее лучше переходить на UTF-8
14. taxi008 - 13 Декабря, 2011 - 21:49:47 - перейти к сообщению
Все так. Но я не могу понять почему все браузеры кроме оперы с этим скриптом осуществляют запрос в bd нормально.
Делаю кодировку..
PHP:
скопировать код в буфер обмена
  1. $name=iconv("UTF-8","Ваша кодировка",$_GET['name']);
.
В результате опера работает коректно, а вот другие перестают работать коректно.
Получается, если я после получения ответа от БД. сделаю обратную перекодировку. Браузеры снова заработают коректно, а опера наоборот.
Какой то замкнутый круг!
Если я таблицы в bd перекодирую в UTF-8, будут ли нармально восприниматся русские буквы? И как будут работать все браузеры с этой кодировкой?
15. tuareg - 13 Декабря, 2011 - 23:08:12 - перейти к сообщению
Вы не только БД перекодируйте, но и проследите чтобв файлы обработчики тоже были в UTF-8

 

Powered by ExBB FM 1.0 RC1