Xhr can't parse json when Xhr.IFramed send form
Reported by Ivan Sokolov | October 7th, 2010 @ 04:10 PM
Xhr.IFramed object gets json from
.documentElement.innerHTML.
After getting json Xhr.text property consists of json string and
tags: '{json'
That is why Xhr can't parse json.
Comments and changes to this ticket
-
MadRabbit October 7th, 2010 @ 04:33 PM
- State changed from new to invalid
Привет Иван,
К сожалению этот номер не пройдет, единственный формат с которым можно безопасно работать через трюк с айфреймом это голый HTML. Старые версии IE просто на просто не понимают ничего другого. Поэтому если вам нужно вернуть данные через айфрейм запрос то нужно посылать назад HTML страницу которая содержит яваскрипт с вашими данными. Например вот так
<html> <head> <script type="text/javascript"> with (window.parent) { my_function({ data: 'boo hoo!' }) } </script> </head> </html>
Если вы на рельсе, то посмотрите right-rails плагин, там это все обернуто в цивилизованный вид
-
Ivan Sokolov October 7th, 2010 @ 05:03 PM
А почему нельзя тупо выдернуть json из documentElement.innerHTMl и его исполнить??
Делается это простыми регулярками.
Ну еще проблема будет в том, что если во айфрейме загружается application/json, то открывается окно на сохранение файла, которое ломает все. Но это тоже не проблема. Можно отдавать text/plain. А json парсить если установлено свойство evalJSON. -
MadRabbit October 7th, 2010 @ 05:16 PM
text/plain IE6 тоже насколько я помню предлагает сохранить на диск. Насчет возможности выдернуть JSON регулярными выражениями, вопрос хороший, но я не думаю что оно будет стабильно работать, т.к. если вы просто отдадите JSON с пометкой text/html то IE будет автоматически пытаться исправить содержимое приводя его в более менее стандартный вид. Как следствие если ваш JSON будет содержать строки с HTML кодом, IE во первых все испортит, во вторых вполне возможно вылетит сам, в природе полно кейсов где IE падает на нестандартной мешанине тэгов.
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
RightJS Core Tickets