Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2013, 16:09
Интересующийся
Отправить личное сообщение для bayanruby Посмотреть профиль Найти все сообщения от bayanruby
 
Регистрация: 26.05.2012
Сообщений: 16

$.post, разный dataType ответа
$.post('/company/add-record', data, function(res)
{
    if (...) {
        alert(res.idRecord)
    } else {
        alert(res)
    }
}, 'json')


если прописан ответ "json", то alert(res) не сработает
если "json" убрать - не будет работать res.idRecord

как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2013, 16:21
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

bayanruby,

"json" означает, что ответ сервера будет самостоятельно преобразован jQuery из строки в объект,
и уже в виде объекта подан к столу в функцию.

а почему что-то работает не так как надо - тебе виднее. Запускай это дело в Хроме, открывай дебаггер (кнопка F12) и смотри, какие данные отправились на сервер, какие пришли в ответ и что в итоге получается.
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2013, 16:33
Интересующийся
Отправить личное сообщение для bayanruby Посмотреть профиль Найти все сообщения от bayanruby
 
Регистрация: 26.05.2012
Сообщений: 16

у меня в основном возращается вот это
{"timer":"","idRecord":"2593","totalNumberOfHours" :"0:00"}

но иногда просто html код

как мне сделать универсальный dataType?
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2013, 16:37
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

bayanruby,

в тех запросах, где возвращается html - не указывать dataType.

или у тебя '/company/add-record' может вернуть данные в формате по своему усмотрению?
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2013, 16:45
Интересующийся
Отправить личное сообщение для bayanruby Посмотреть профиль Найти все сообщения от bayanruby
 
Регистрация: 26.05.2012
Сообщений: 16

ну, грубо говоря да
Ответить с цитированием
  #6 (permalink)  
Старый 04.09.2013, 16:52
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

плохо.
клиентская сторона должна заранее знать, в каком формате придет ответ.

может, это зависит от параметров в data? тогда в зависимости от них можно выставить формат и действовать в обработчике ответа.
Ответить с цитированием
  #7 (permalink)  
Старый 04.09.2013, 16:59
Интересующийся
Отправить личное сообщение для bayanruby Посмотреть профиль Найти все сообщения от bayanruby
 
Регистрация: 26.05.2012
Сообщений: 16

короче сделал так

в методе, на сервере, который выводит JSON я добавил заголовок
header("Content-Type: application/json");

и в js теперь так

$.post('/company/add-record', data, function(res)
{
    if (typeof res !== 'object') {
        alert(res)
    } else {
        alert(res.idRecord)
    }
})

Последний раз редактировалось bayanruby, 04.09.2013 в 17:15.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 10:04
ajaxSubmit - проблема с получением ответа в success в опера и IE amelinviacheslav jQuery 23 29.03.2014 12:45
Задержка ответа return bartle96 AJAX и COMET 3 24.04.2013 09:20
Метод JQuery $.post работает через раз Dimaz AJAX и COMET 3 22.11.2012 17:52
ajax, завершение функии до получения ответа Slavenin AJAX и COMET 5 05.12.2010 03:23