dポイントプレゼントキャンペーン実施中!

質問の意図。
現在、Ajaxの学習を深めています。
javascript側のrequestオブジェクトのopen()メソッドの
第1引数のURLは単なるテキストストリームを
返すものであれば何でもよいことがわかりました。

1) 単なる、CSVなどのテキストデータを静的にWebサイトに配置。
2) CGIでPerlや、Java Servletでresponse.println( 等で、
単なるテキストデータを返す。

上記(1),(2)のような別に画面とか、HTMLとか関係ないような
サーブレットのようなもの(JSPとかからまない)ものに
対応するURLを
javascript側のrequestオブジェクトのopen()メソッドの
第1引数として、
渡せばよいらしいです。

ところが、Visial Studio上で作成した。
aspx + コードビハインドの構成だと、
はじめから、aspx上に、HTMLのコードが入っています。
Visual Studio 上のC#, VBで、インテリセンス機能を効かせながら
作れるモジュールで、URLとマッピング可能なモジュールで、
かつ、
Java Servletの単なるresponse.println(
するだけのような純粋なプレーンテキストを吐き出すモジュールは
どのようにして、作るのでしょうか?

A 回答 (2件)

Page_load で



Response.Write("hoge")
Response.End()

この回答への補足

ご回答ありがとうございます。
それは、
Visual Studio上で可能でしょうか?
<script runat=server形式で
aspxにロジックをベタ書きする。やり方のイメージでの回答でしょうか?



Visual Studio上で、新規でページを作成して、
ためして見ましたが。

クライアント側には、空文字列が帰ってきます。
Ajax側のXmlHttpRequestオブジェクトのopen(
の引数としては、"GET"と"POST"の両方を試してみましたが。
いづれも結果は同じでした。

パッケージ名に、個人名や、企業名が載っているためソースコードのすべては
貼り付けできませんので、
一部抜粋して、貼り付けます



#############################
ASPXのコードの概要
#############################

//団体名を連想するパッケージなので
//消します。
<%@ Page language="c#" Codebehind="Test.aspx.cs" AutoEventWireup="false" Inherits="XXXXXXXXXXXXXXXXXXX.Test" %>
<HTML>
<HEAD>
<title>Test</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
</form>
</body>
</HTML>


#############################
ASPX.CSのコードの概要
#############################

public class Test : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//// ページを初期化するユーザー コードをここに挿入します。
//this.Response.Write("Hellow World" + System.Environment.NewLine);


this.Response.Write("d001,Dのデータです。15インチ液晶ディスプレイ" + System.Environment.NewLine);
this.Response.Write("d002,Dのデータです。17インチ液晶ディスプレイ" + System.Environment.NewLine);
this.Response.Write("d003,Dのデータです。19インチ液晶ディスプレイ" + System.Environment.NewLine);
this.Response.Write("d004,Dのデータです。20インチ液晶ディスプレイ" + System.Environment.NewLine);
//this.Response.Write("d005,Dのデータです。21インチ液晶ディスプレイ" + System.Environment.NewLine);
this.Response.End();
}


#############################
Ajaxのjavascript側でのコード概要、(通信部の共通ロジック・・・
#############################
//httpObj.open("GET", target_url, true);
httpObj.open("POST", target_url, true);
の両方で、ためして、駄目でした。


//引数で与えられたURLにHTTPリクエストを行い、指定された関数を実行
function httpPostRequest(target_url, functionReference) {
alert("httpPostRequest()");
try {
if(window.XMLHttpRequest) {
httpObj = new XMLHttpRequest();
} else if(window.ActiveXObject) {
httpObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpObj = false;
}
} catch(e) {
httpObj = false;
}

if(!httpObj) {
httpObjGenerateFail();
}

timerId = setInterval('timeoutCheck()', 1000);

//httpObj.open("GET", target_url, true);
httpObj.open("POST", target_url, true);
httpObj.onreadystatechange = function() {
if(httpObj.readyState == 4) {
clearInterval(timerId);
if(httpObj.status == 200) {
functionReference(httpObj.responseText);
} else {
alert(httpObj.status + ':' + httpObj.statusText);
return false;
}
}
}

//タイムアウト秒数の再設定
timeout_sec = timeout_sec_InitialValue;

//リクエスト送信
httpObj.send('');
}

補足日時:2005/12/21 12:42
    • good
    • 0
この回答へのお礼

#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
ごめんなさい。もうここにしかかけないので目立つよ
うに書きます。
No2.にて、ブラウザにて、URLを直接打ち込むと、真っ白になると書きますたが。
よく見ると単にURLのうち間違いでした。
ちゃんと、プレーンテキストかえって来ました。
なので、javascriptのほうにもちゃんと、返せました。
うまくいきました。
お騒がせしました。
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################

お礼日時:2005/12/21 14:43

ブラウザにaspxのURLを入れるとどうなりますか?


あと、InetspyなどのHTTPモニタで動きを見るとか。

この回答への補足

ブラウザの入力欄に
http://hogehoge/hoge/Test.aspx
と打ち込むと画面は真っ白です。

HTMLソースを除いてみると、
#################################
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY></BODY></HTML>
#################################
これは、先ほどのASPX上に記載されているHTMLイメージと
不一致しており、少々変な感じです。


ところが、
Test.aspxをVisual Studio上でスタートアップページとして
選択して、VS上から、F5キーにて、実行すると、

d001,Dのデータです。15インチ液晶ディスプレイ d002,Dのデータです。17インチ液晶ディスプレイ d003,Dのデータです。19インチ液晶ディスプレイ d004,Dのデータです。20インチ液晶ディスプレイ
と表示されます。
<htmlが混じってるのかな?と思い。
HTMLソースを除いてみると、
綺麗に、
###################################################
d001,Dのデータです。15インチ液晶ディスプレイ
d002,Dのデータです。17インチ液晶ディスプレイ
d003,Dのデータです。19インチ液晶ディスプレイ
d004,Dのデータです。20インチ液晶ディスプレイ
###################################################
と純粋なプレーンテキストでした。

画面として、ASPXが実行されるのではなく、
単なるプレーンテキストを返却する。
URLと、マッピングされたロジックを作りたいです。

Java Servletなどでは、
out.println(
形式でやって、ブラウザでたたいても、
そのままのものが帰ります。
それとおなじことが、Visual Studio上で作業したい
というのが、この質問の趣旨です。

補足日時:2005/12/21 14:00
    • good
    • 0
この回答へのお礼

もうひとつ、補足します。
No1の補足にて、貼り付けた通信部分を
"GET"の形式にして、
httpRequest('http://www.google.co.jp', generateDropdownList);
と、googleのURLですると、
googleのhtmlソースがテキストで帰ってきました。

お礼日時:2005/12/21 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!