Javascript.RU

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

парсинг XML. удаляет теги из контейнера
Возникла необходимость динамически изменять содержимое таблицы и некоторых полей. имеется форма, нужно считать с нее данные и отправить на сервер для валидации и последующего сохранения их в бд. Сервер в свою очередь должен выдать ряд ответов: о некорректности данных либо о добавлении либо изменении содержимого таблицы. Пытаюсь это все передать ХМЛ файлом, но при парсинге удаляются все теги и остается голый текст. метод .htm() тоже возвращает голое значение.
Подскажите как можно выйти из положения. Пытался скрипт отпраить - он не выполняется.
$.ajax({
url: src+"/add",
type: "POST",
data: {book_id: id, book_title: title, book_photo: photo, autor_name: autors, book_janr: janrs},
success: function(data){
$(data).find('site').each(function(){
var adr = $(this).find('name').text();
var val = $(this).find('value').html();
$(adr).html(val);
});
});

пример хмл файла:
<sites>
<site><name>input[name='book_title']</name><value>".$data[0]->book_title."</value></site>
<site><name>input[name='book_photo']</name><value>".$data[0]->photo."</value></site>
<site><name>input[name='autor_name']</name><value>".$da."</value></site></sites>;
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2013, 22:45
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 09.07.2007
Сообщений: 304

вместо XML используйте JSON
__________________
лучшая rss читалка zzreader.com
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2013, 22:47
Интересующийся
Отправить личное сообщение для ur5fdg Посмотреть профиль Найти все сообщения от ur5fdg
 
Регистрация: 24.09.2013
Сообщений: 11

Подскажите как его правильно использовать, что на входе, что на выходе. я пытался настроить, не получилось.
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2013, 23:04
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 09.07.2007
Сообщений: 304

http://ru.wikipedia.org/wiki/JSON
var data = ".....";
var obj;
try {obj = JSON.parse(data) }catch(e){};

obj - наши данные в виде обьекта. если в data будет невалидный JSON то JSON.parse вызовет исключение, потому и нужен try catch
__________________
лучшая rss читалка zzreader.com

Последний раз редактировалось vflash, 24.09.2013 в 23:19.
Ответить с цитированием
  #5 (permalink)  
Старый 25.09.2013, 01:12
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от ur5fdg
Возникла необходимость динамически изменять содержимое таблицы и некоторых полей. имеется форма, нужно считать с нее данные и отправить на сервер для валидации и последующего сохранения их в бд. Сервер в свою очередь должен выдать ряд ответов: о некорректности данных либо о добавлении либо изменении содержимого таблицы. Пытаюсь это все передать ХМЛ файлом, но при парсинге удаляются все теги и остается голый текст. метод .htm() тоже возвращает голое значение.
Подскажите как можно выйти из положения. Пытался скрипт отпраить - он не выполняется.
Как вариант, при вставке в форму кодирнуть контент через encodeURIComponent,
на серве - раскодировать... и распарсить
Зы: есть проблемы при использовании на сайтах с кодировкой windows-1251
Ответить с цитированием
  #6 (permalink)  
Старый 25.09.2013, 03:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

На сервере (php) используй json_encode()
На клиенте добавь параметр dataType: 'json' , или третьим аргументом (после callback-функции) строку 'json' или на сервере выставь заголовок Content-Type: application/json (самый верный способ, но из-за кривости рук редко используемый)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 25.09.2013, 03:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А чтоб с xml использовать, нужно тоже самое сделать, только dataType: 'xml' и заголовок Content-Type: application/xml
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 25.09.2013, 03:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А голый текст у тебя потому что HTML внутри XML нужно экранировать через <![CDATA[ ... ]]>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 25.09.2013, 10:37
Интересующийся
Отправить личное сообщение для ur5fdg Посмотреть профиль Найти все сообщения от ur5fdg
 
Регистрация: 24.09.2013
Сообщений: 11

Сделал тестовый скриптик, как вы советовали:
$.ajax({
url: src+"/add",
type: "POST",
dataType:'json',
data: {book_id: id, book_title: title, book_photo: photo, autor_name: autors, book_janr: janrs},
success: function(data){
try{
var obj = $.parseJSON(data);
alert(obj.name);
}catch(e){
alert('Опапа - приплыли')}
},
});

а на сервере следующее:
$data = array ("name"=>"Иван", "surname"=>"Иванов");
echo json_encode($data);

вылетает в обработчик исключительной ситуации. смотрел принимаемые данные - пишет что объект. а в отладчике говорит что обращение к NULL

P.S. работаю CodeIgniter принимаю данные методом контроллера, заголовков не ставил.

Последний раз редактировалось ur5fdg, 25.09.2013 в 10:43.
Ответить с цитированием
  #10 (permalink)  
Старый 25.09.2013, 10:57
Интересующийся
Отправить личное сообщение для ur5fdg Посмотреть профиль Найти все сообщения от ur5fdg
 
Регистрация: 24.09.2013
Сообщений: 11

$data = array ("name"=>"Иван", "surname"=>"Иванов");
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode($data));
Такая конструкция тоже результат не дала
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг из xml Vasy Общие вопросы Javascript 19 13.03.2013 17:15
парсинг xml с сайта используя js teanrus Общие вопросы Javascript 5 18.12.2012 13:36
парсинг XML с параметрами javaScript-ом Sveta AJAX и COMET 5 22.10.2012 11:20
Парсинг XML в IE eternal AJAX и COMET 1 20.11.2011 01:25
не работает парсинг XML в IE Enxiro jQuery 6 25.08.2010 12:26