- PR -

AjaxでXMLデータの受け渡し

投稿者投稿内容
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-08 18:19
引用:

>>渋木宏明さん
だんだんその雰囲気が漂ってきました・・・



あと、HTML らしきものが混入しているなら、aspx ファイル内に HTML の断片が残っていませんか?

念のためそれらを削って、XML を書き出す前に Response.Clear() (だっけ?)で出力バッファの内容をクリアしてから、自分の書き出したい内容を出力すればいいんじゃないかな。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-08 18:35
引用:

パンダおにぎりさんの書き込み (2006-05-08 17:25) より:

ですがnodes[0].firstChild.nodeValue;の所でエラーが出てしまいます。


すいませんこちらのエラーもください。

引用:

// XML化
string strXML = "<?xml version='1.0' ?>rn" + ds.GetXml();
XmlDocument xml = new XmlDocument();
xml.LoadXml(strXML);


あと、この部分て XmlDocument 作らなくてもできませんか?
コード:
Response.ContentType = "text/xml"
Response.Write("<?xml version='1.0' encoding='UTF-8' ?>")
Response.Write(ds.GetXml)
Response.End()

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-05-08 18:43
コード:
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.ContentType = "text/xml";
Response.Write("<?xml version='1.0' encoding='utf-8' ?>\\n");
ds.WriteXml(Response.OutputStream);
Response.End();




私なら、Ajaxサーバ側をWebサービス(asmxファイル)で作りますね。
戻り値を構造体または構造体配列にすると綺麗なXMLを返します。

コード:
public struct 人 {
	public string 氏名;
}

[WebMethod]
public 人 WhoAreYou(int id) {
	人 ans = new 人();
	ans.氏名 = "私は" + id + "です";
	return ans;
}



Ajaxクライアント側では
http://myServer/myProject/myService.asmx/WhoAreYou?id=1
を呼びます。

web.configでHttpGetを有効にする必要があります。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27408&forum=7
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2006-05-09 10:08
すいません返信が遅れました。

頂いた意見を参考に組み直してみたら上手く受信できました。
Response.Clear();
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "text/xml";
Response.Write("<?xml version='1.0' encoding='UTF-8'?>");
Response.Write(ds.GetXml());

かるあさんの指摘されたエラーなんですがtry catchでどうしても取れませんでした。
XmlDocumentより文字列を直接Writeした方がスムーズに行くんですね。
ResponseEnd()は記述したかったのですが送信XML文に"スレッドを中止しようとしました。"が混ざってしまいエラーになりました。

Webサービスはこれから勉強しようと思います。
今回出来たのはみなさんの御かげです。
本当に有難うございました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-09 10:17
引用:

パンダおにぎりさんの書き込み (2006-05-09 10:08) より:

かるあさんの指摘されたエラーなんですがtry catchでどうしても取れませんでした。


了解しました。なんなんでしょうね

引用:

パンダおにぎりさんの書き込み (2006-05-09 10:08) より:

XmlDocumentより文字列を直接Writeした方がスムーズに行くんですね。
ResponseEnd()は記述したかったのですが送信XML文に"スレッドを中止しようとしました。"が混ざってしまいエラーになりました。


これは catch しなければ素通りしませんでしたっけ?
} catch (Exception ex) {
とかしていませんか?
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2006-05-09 10:25
そのとおりでした!
Responseを使ってる所では記述しない方がいいですね。
Response.End()は最後に追加しときます。

(重ね重ねすいません^^;)
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-05-09 10:50
というより
コード:
catch (Exception ex)


これが絶対駄目ですね。再スローするならいいですけど。
ログ等を採るためにしているだけかな?
_________________
囚人のジレンマな日々
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-09 10:51
引用:

パンダおにぎりさんの書き込み (2006-05-09 10:25) より:

Responseを使ってる所では記述しない方がいいですね。



誰かリンクを張りそうですが
やっぱり出しといたほうが良いでしょうか
http://d.hatena.ne.jp/NAL-6295/20050909

スキルアップ/キャリアアップ(JOB@IT)