2012-02-23 6 views
0

AJAXでXMLを読み込もうとしていますが、すべてのデータは整形式のXMLファイルから取得され、AJAXを介してクライアントページに送られます。しかし、xmlhttp.responseXMLは常に使用できません。 XMLHTTP応答XMLは何も含まれていないながら、私のウェブページXMLHTTP応答テキストがあまりにも正しいXMLデータが含まれている上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) 
     } 
    } 
} 

​​は、適切なXMLが含まれています

は、ここに私のコントローラです。クライアントのページに真のXMLデータを送信し、それを悪用するにはどうすればよいですか? XMLレスポンスで作業する必要もあります。

+0

本当に 'response.sendError(200)'を意味しますか? 'response.setStatus(SC_OK)'が必要な場合があります。 'render'の前に設定してみてください – ccheneson

+0

なぜあなたは' def xml = XML.parse(fileManipulatorService.fileProvider(params.fileId).getText()、 "UTF-8"); XMLをXMLとしてレンダリングする ' – Chris

+0

sendErrorはそれを解決しません。 XML.parseの場合、メソッドのシグネチャはありません。静的なgrails.converters.XML.parse()です。まるでgrails xmlコンバータをインポートしなかった場合と同じです。なぜか分からない。私はますます失われてきています... – Smithfield

答えて

0

あなたが試すことありがとう(私はChromeを使用しています)(私は文字列から作成された新しいXMLオブジェクトを送信しようとした、私は、元のファイルを返すようにしようとしたが、これらの方法のどれも働いていません) XMLとしてresultStrをレンダリングします

これはうまくいくはずです。これらは本当に好きではありませんconvertersこれはあなたの問題の原因である場合

+0

こんにちは、私はそれを正しく使用していないかもしれませんが、私はresultStrをXMLとしてレンダリングしようとしましたが、XMLと同様に機能しませんでしたし、XML.parse(resultStr)どんな考え?それはruntime.typehandling.GroovyCastExceptionのようなエラーを生成するか、クラスは 'java.lang.String'をクラス 'grails.converters.XML'にキャストできません – Smithfield

+0

実際はかなり正常です。単一の文字列は* valid * xmlです。通常、コンバーターはプロパティ値:に設定されています。 –

2

は私はわからないんだけど、このコードは、それが有効な復帰後response.sendErrorを実行します

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

Grailsのrenderを実行した後に返さない任意の意味をなさないデータ。これらの行を置換する

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

残念ながら、それは何も変わりません。 – Smithfield