Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.05.2013, 17:36
Новичок на форуме
Отправить личное сообщение для Tenaro Посмотреть профиль Найти все сообщения от Tenaro
 
Регистрация: 23.03.2012
Сообщений: 9

$.ajax не принимает json
Ребята помогите,
...
$.ajax({
type: "POST",
url: "php/const.php",
dataType: 'json',
data: "news="+num_clicks,
success: function(data){
$('#example-1').append(data);
},
error: function (r) {
alert("Ошибка ajax");
}
});
}

const.php
header("Content-type: text/json ;charset=utf-8");
...
$res = $mysqli->query('SELECT * FROM news ORDER BY news_id DESC LIMIT '.$start_news.','.$news_per_click);

while($row = mysqli_fetch_assoc($res)) {
$arr[] = $row;
}
echo json_encode($arr);

php выдает валидный json:
[{"news_id":"11","ntext":"text11","ndate":"2010-10-21"},{"news_id":"10","ntext":"text10","ndate":"201 0-10-20"},......

но js кричит "ошибка ajax", если поставить datatype "text" - все работает.
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2013, 18:02
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от qwerty-клавиатура
 
Регистрация: 12.04.2013
Сообщений: 132

dataType: 'text',
success: function(data){ eval('data=' + data); console.log(data) }
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2013, 18:26
Новичок на форуме
Отправить личное сообщение для Tenaro Посмотреть профиль Найти все сообщения от Tenaro
 
Регистрация: 23.03.2012
Сообщений: 9

в консоле вижу свои данные, чем это может помочь?
в сети куча идентичных примеров, у всех работает..
Ответить с цитированием
  #4 (permalink)  
Старый 04.05.2013, 20:40
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от qwerty-клавиатура
 
Регистрация: 12.04.2013
Сообщений: 132

видимо jquery использует xhr.responseType = 'json'; так вот не все браузеры это понимают
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2013, 15:00
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от Tenaro Посмотреть сообщение
php выдает валидный json:
[{"news_id":"11","ntext":"text11","ndate":"2010-10-21"},{"news_id":"10","ntext":"text10","ndate":"201 0-10-20"},......
конечно ругается, это ж нихрена не валидный json, это массив объектов.
возвратите из пхп в виде
{ 'arr': [
{"news_id":"11","ntext":"text11","ndate":"2010-10-21"},
"news_id":"10","ntext":"text10","ndate":"2010-10-20"},
...... ] 
}

и будет счастье
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2013, 15:01
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от nasqad Посмотреть сообщение
я просто незнаю джаваскрипт но мне кажется вы делаете что-то невернo, попробуйте почитать что нибудь
пять баллов
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2013, 15:58
Новичок на форуме
Отправить личное сообщение для Tenaro Посмотреть профиль Найти все сообщения от Tenaro
 
Регистрация: 23.03.2012
Сообщений: 9

$js = json_encode($arr);
$jse = "{ 'arr': " . $js . "}";
echo $jse;

что то такое? та же ошибка.

{ 'arr': [{"news_id":"11","ntext":"text11","ndate":"2010-10-21"},....]}
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2013, 16:45
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

что-то не так значит делаете.
вот в переменную х я записываю значение, которое якобы отдаёт ваш сервер:
var x = { 'arr': [
    {"news_id":"11","ntext":"text11","ndate":"2010-10-21"},
    {"news_id":"22","ntext":"text22","ndate":"2010-10-22"},
    {"news_id":"33","ntext":"text33","ndate":"2010-10-23"}
]};

console.log(x.arr[2].ntext); // выводит "text33"

как видно из последней строчки, это вполне себе валидный json.

проверьте ещё раз, что отдаёт сервер. может где-то запятая лишняя или кавычка.
Ответить с цитированием
  #9 (permalink)  
Старый 06.05.2013, 17:08
Новичок на форуме
Отправить личное сообщение для Tenaro Посмотреть профиль Найти все сообщения от Tenaro
 
Регистрация: 23.03.2012
Сообщений: 9

$arr = array();
while($row = mysqli_fetch_assoc($res)) {
$arr[] = $row;
}
$js = json_encode($arr);

echo $js;

теперь работает, спасибо всем.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка JSON данных в цикле Fareastaz jQuery 12 15.03.2013 20:20
Проблемы с jqGrid и JSON massacra_panda Библиотеки/Тулкиты/Фреймворки 1 08.10.2012 16:44
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Json не принимает данные TimbI4 Общие вопросы Javascript 7 19.08.2011 12:56
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10