Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2011, 08:05
Новичок на форуме
Отправить личное сообщение для Gri3li Посмотреть профиль Найти все сообщения от Gri3li
 
Регистрация: 17.06.2011
Сообщений: 2

Баг с post запросом получающим json данные (jquery)
В jquery-1.5.2 и jquery-1.6.1 глючно работает post запрос получающий json данные, в jquery-1.3 все ок, но мне нужно не младше 1.5.


Вот клиентский код:

$(function () {

	$.ajax({
		url: 'example.php',
		type: 'POST',
		data: {data: ''},
		dataType: 'json',
		//dataType: 'text',
		success: function (r) {
			alert('success !!!');
		},
		error: function (r) {
			alert(
				'Ajax Error \n' +
				'\n readyState: ' + r.readyState + 
				'\n responseText: ' + r.responseText + 
				'\n status: ' + r.status + 
				'\n statusText: ' + r.statusText
			);
		}
	});	
	
});



Вот серверный код:

<?php
//header('Content-type: text/json; charset=utf-8'); // и так пробовал 
header('Content-type: application/json; charset=utf-8');
//header('Content-type: text/plain; charset=utf-8');

echo '{status: 1}';

?>



Вот что говорит alert:

Код:
Ajax Error 

 readyState: 4
 responseText: {status: 1}
 status: 200
 statusText: parsererror

Вот что говорит FireBug:

Headers
Код:
Response Headers
Date: Mon, 20 Jun 2011 03:48:48 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By: PHP/5.2.4
Content-Length: 11
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8

Request Headers
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding	: gzip,deflate
Accept-Charset	: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive	: 300
Connection: keep-alive
Content-Type	: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Response
Код:
{status: 1}
JSON
Код:
status: 1

В принципе можно в js коде dataType: 'json' поменять на dataType: 'text' и в php header('Content-type: application/json; charset=utf-8'); на header('Content-type: text/plain; charset=utf-8');
так все работает, а результат можно обрабатывать с помощью функции eval().

Но как то не кошерно, да и время дофига на поиск решения потратил, хочется нормально сделать.
Кто нибудь с этим сталкивался?

Последний раз редактировалось Gri3li, 20.06.2011 в 08:09.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2011, 10:39
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

JSON.parse('{status: 1}')//SyntaxError: Unexpected token ILLEGAL
JSON.parse('{"status": 1}')//Object
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2011, 11:35
Новичок на форуме
Отправить личное сообщение для Gri3li Посмотреть профиль Найти все сообщения от Gri3li
 
Регистрация: 17.06.2011
Сообщений: 2

Спасибо огромное
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача POST запросом массива из PHP alex_zp jQuery 6 16.11.2010 08:16
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10
jQuery отправка большого текста post запросом автоматически . Kisses jQuery 1 10.07.2010 14:28
не работает JSON в JQuery 1.4.1 mcpro jQuery 7 22.03.2010 17:56
Jquery, Dynatree и JSON antirek jQuery 6 01.09.2009 15:00