2012-02-23 3 views
0

Я пытаюсь прочитать XML с AJAX, все данные взяты из хорошо сформированного XML-файла, а затем отправляются на клиентскую страницу через AJAX. Но xmlhttp.responseXML всегда остается непригодным.Ajax и grails render

Вот мой контроллер:

def fileGetter = { 
    if (params.fileId) { 
     try { 
      String resultStr = fileManipulatorService.fileProvider(params.fileId).getText() 
      println resultStr 
      render(text: resultStr, contentType: "text/xml", encoding: "ISO-8859-1") 
      response.sendError(200) 
     } 
    } 
} 

resultStr содержит правильный XML, на мой текст веб-страницы ответа XMLHTTP содержит правильные данные XML тоже пока XMLHTTP ответ XML не содержит ничего. Как отправить истинные XML-данные на мою клиентскую страницу и использовать ее? Мне тоже нужно работать с ответом XML. (Я пытался отправить новый объект XML, созданный из строки, я попытался вернуть исходный файл, но ни один из этих методов не работал) (я использую Chrome)

Спасибо

+0

Вы действительно имеете в виду 'response.sendError (200)'? Вам может понадобиться 'response.setStatus (SC_OK)'. Также попробуйте установить его перед 'render' – ccheneson

+0

, почему вы не def xml = XML.parse (fileManipulatorService.fileProvider (params.fileId) .getText(),« UTF-8 »); render xml как XML' – Chris

+0

sendError не решает проблему. А для XML.parse он генерирует ошибку Нет сигнатуры метода: static grails.converters.XML.parse(). Точно так же, как если бы не импортировал конвертер XML grails. Я не понимаю, почему. Я все больше теряю ... – Smithfield

ответ

0

Вы можете попробовать render resultStr as XML

Это должно сработать, мне это не очень нравится converters.

+0

Здравствуйте, возможно, я не использую его правильно, но я просто пытаюсь сделать resultStr как XML, он не работает, а XML.parse (resultStr), поскольку XML тоже не работает? любая идея почему? Он генерирует такие ошибки, как: runtime.typehandling.GroovyCastException или с классом не может использовать «java.lang.String» для класса «grails.converters.XML». – Smithfield

+0

На самом деле это довольно нормально. Единственная строка * valid * xml. Обычно преобразователи для свойства: значение установлено в значение. –

2

Я не уверен, если это является причиной вашей проблемы, но этот код не имеет никакого смысла

render(text: resultStr, contentType: "text/xml", encoding: "ISO-8859-1") 
response.sendError(200) 

Grails не возвращается после выполнения render так он будет выполнять response.sendError после возвращения в силе данные. Заменить эти строки на

render(text: resultStr, contentType: "text/xml", encoding: "ISO-8859-1") 
+0

Ну, к сожалению, это ничего не меняет. – Smithfield