парсинг 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>; |
вместо XML используйте JSON
|
Подскажите как его правильно использовать, что на входе, что на выходе. я пытался настроить, не получилось.
|
http://ru.wikipedia.org/wiki/JSON
var data = "....."; var obj; try {obj = JSON.parse(data) }catch(e){}; obj - наши данные в виде обьекта. если в data будет невалидный JSON то JSON.parse вызовет исключение, потому и нужен try catch |
Цитата:
на серве - раскодировать... и распарсить Зы: есть проблемы при использовании на сайтах с кодировкой windows-1251 |
На сервере (php) используй json_encode()
На клиенте добавь параметр dataType: 'json' , или третьим аргументом (после callback-функции) строку 'json' или на сервере выставь заголовок Content-Type: application/json (самый верный способ, но из-за кривости рук редко используемый) |
А чтоб с xml использовать, нужно тоже самое сделать, только dataType: 'xml' и заголовок Content-Type: application/xml
|
А голый текст у тебя потому что HTML внутри XML нужно экранировать через <![CDATA[ ... ]]>
|
Сделал тестовый скриптик, как вы советовали:
$.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 принимаю данные методом контроллера, заголовков не ставил. |
$data = array ("name"=>"Иван", "surname"=>"Иванов");
$this->output->set_content_type('application/json'); $this->output->set_output(json_encode($data)); Такая конструкция тоже результат не дала |
Часовой пояс GMT +3, время: 01:00. |