Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > AJAX

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 21.02.2013, 15:13   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 21.02.2013
Сообщений: 1
Репутация: 0
По умолчанию jQuery ajax не обрабатывает ответ от сервера

Люди, помогите! Уже сколько мучаюсь, так и не пойму в чём дело.
Проблема вот в чём. Есть на сайте функционал, отправляющий некоторую json структуру и возвращающую же её в ответ.
Используется библиотека jquery-1.9.1.min.js.


Функция, которая вызывается для этого:
Код:
function sendFeedback()
{

$.ajax({
  type: "POST",
  url: "feedback.php",
  dataType: "json",
  data: {name: $("#name").val(), email: $("#email").val(), text: $("#text").val(), capcha: $("#capcha").val()},
  success: function(result, ajaxObj) { alert('OK'); },
  error: function(ajaxObj, message, exceptionObj){ alert(exceptionObj); },
  complete: function(ajaxObj){ alert('finish'); }
}).done(function(result){ 
   $("#answer").html(result.answer); 
});

}
PHP-код на сервере:
Код:
<?php
// Перепробовал различные вариации заголовков, в том числе и без них, как было раньше
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: application/json");
header("Accept-Charset: utf-8"); 

echo '{"isok":"1","answer":"2"}'; // Это для примера ответ
?>
Так вот. При вызове, $.ajax вызывает error в любых браузерах, кроме firefox (у меня 18.0). В firefox-е всё отрабатывает на отлично, но в Opera и Chrome она отрабатывает с ошибкой.
Чтобы добиться ответа, я подключил в замен сжатой библиотеке нормальную с читабельным кодом jquery-1.9.1.js. Какое же было, что теперь и firefox перестал нормально обрабатывать код! Точнее, он его нормально обрабатывает в половине случаев. Вообще без понятия в чём дело. Хотя сейчас firefox стабильно всё обрабатывает.
Сервер вроде бы возвращает всё нормально.

Если просмотреть что отправляется, а что принимается, то в firebug в firefox-е, в случае обработки запроса с ошибкой, выводит в консоли строчку, выделенную красным цветом (без понятия что это выделение означает):

Код:
POST http://www.site.com/feedback.php

Заголовки ответа
Accept-Charset    utf-8
Cache-Control    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection    keep-alive
Content-Type    application/json
Date    Tue, 19 Feb 2013 21:46:49 GMT
Expires    Thu, 19 Nov 1981 08:52:00 GMT
Pragma    no-cache
Server    nginx
Set-Cookie    PHPSESSID=746a0fa3f9ef7055f006ef3b4033c8a2; path=/
Transfer-Encoding    chunked
Vary    Host
X-Powered-By    PHP/5.2.17

Заголовки запроса
Accept    */*
Accept-Encoding    gzip, deflate
Accept-Language    ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Content-Length    26
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Host    www.site.com
Origin    http://site.com
Referer    http://site.com/
User-Agent    Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Что ответил сервер он не сообщает.

Dragonfly же из Opera сообщает следущее:

Код:
POST http://www.site.com/feedback.php

200 OK
Запрос
POST /feedback.php HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.10.289 Version/12.02
Host: www.site.com
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://site.com/
Connection: Keep-Alive
Content-Length: 26
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://site.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Имя    Значение
name    
email    
text    
capcha    

Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 19 Feb 2013 22:07:38 GMT
Content-Type: application/json
Connection: keep-alive
Vary: Host
X-Powered-By: PHP/5.2.17
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Accept-Charset: utf-8
Set-Cookie: PHPSESSID=46662d5b899e76b0fa17300a2645e17b; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT

{"isok":"1","answer":"2"}
Обрабатывается, соответственно, запрос с ошибкой, но видно, что сервер всё отправил.
Абсолютно всё тоже самое, если не обёртывать всё в JSON а просто возвращать какой нить текст.

В чём может быть дело?

Добавлено через 13 минут
Ох, кажется поспешил с вопросом. Только что узнал, что на тестовой странице сайта, где чисто висит одна форма без ничего больше, всё работает идеально. Значит, что-то из содержимого на самом сайте мешает работе скрипта. Придётся искать.

Добавлено через 24 минуты
В общем, я не знаю что случилось, но после прохода тестовой странице, сам код на сайте начал отрабатывать исправно.
Всё работает отлично, как и должно, и я не знаю почему, потому что я ничего не менял.

Это фаза луны так влияет или чистая всёлечащая энергия этого форума?
IfOrAnD вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: руки вверх афиша 2025Компьютерная фирма КНС Нева предлагает ноутбук Acer Extensa 15 EX215-55-5078 - поставщик техники для дома и бизнеса в Санкт-Петербурге.двуспальная кровать трансформерConecte Adalo a SquarespaceЯндекс.Геокодер и JavaScript


Старый 25.02.2013, 18:28   #2
pahanelius
Неактивный пользователь
 
Пол:Мужской
Регистрация: 28.11.2010
Сообщений: 53
Репутация: 13
По умолчанию Re: jQuery ajax не обрабатывает ответ от сервера

http://php.net/manual/ru/function.json-encode.php

echo json_encode(array('isok' => 1, 'answer' => 2));

Насчет заголовков: обязательный здесь только header("Content-Type: application/json");
У меня без остальных всегда все работает (utf-8 по умолчанию)
pahanelius вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход с jQuery 1.2.6 на jQuery 1.4 или 1.5 Vinni_incorp Программирование 1 16.03.2012 09:26
AJAX загрузка с сервера idserg AJAX 0 26.07.2011 20:09
Навигация во фреймах (jQuery) Vinni_incorp Архив 1 02.07.2011 11:41
Бесплатный видеокурс по jQuery Денис Хомич agapit1001 Вeб Дизайн 4 25.02.2011 14:57
Создание простого AJAX сайта с помощью jQuery Baddark AJAX 7 10.07.2010 16:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:49. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.29103 секунды с 13 запросами