2011-07-10 12 views
1

私はASPを初めて使っています。私は、JSON形式のデータを要求して戻ってくるASPページを作りたいと思います。私はいくつかのチュートリアルを辿り、私が今見ることができるのは、自分のコードでコールバックを持つ本格的なページのリンクです。したがって、本質的にサーバーは、明らかに有効なJSONではないHTMLをたくさん用意しています。だから私の唯一の質問は、どうやってそのようなWebページを作るのですか? Webページに行ったときにhttp://localhost:8080(または類似のもの)とコールバックや関数がデータベースに接続し、情報を収集し、応答として返信するようにアプリケーションを設計したい有効なJSON。私は同じ効果を得ることができるライブラリを探しているわけではありませんが、単にResponse.Writeステートメントのセットを使って達成する方法のようなものです。ASPを使用してJSON形式のデータを返す単純なページを作る。

私は私のコンセプトには一貫していないという考えを伝えることができたら、私は容赦してください。

ご協力いただきまして誠にありがとうございます。

よろしく、 p1n3appl3

編集:私は現在、次のJavaScriptコードを使用しています:

var xhr = new XMLHttpRequest(); 
xhr.open("POST", "http://localhost:47949/Default.aspx/NameChange"); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     alert(xhr.responseText); 
    } 
} 

xhr.send(""); 

それはコールし、すべての、すべての罰金になりますが、問題は、それが全体のコードを返すということです「Default.aspx」ページのもう一度。つまり、メソッドNameChangeは呼び出されていません(私はブレークポイントを設定してこれをテストしました)。

私は間違っていますか?

答えて

3

あなたのページにPageMethodを定義することができます。

public partial class _Default : Page 
{ 
    [WebMethod] 
    public static SomeObject GetObject() 
    { 
     SomeObject result = ... fetch from db or something 
     return result; 
    } 
} 

か、またJavaScriptSerializerクラス使用して手動でこれを行うことができます:返事のための

public partial class _Default : Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Clear(); 
     Response.ContentType = "application/json"; 
     SomeObject result = ... fetch from db or something 
     var serializer = new JavaScriptSerializer(); 
     string json = serializer.Serialize(result); 
     Response.Write(json); 
    } 
} 
+0

おかげで多くのことを。私は上記のコードを試しましたが、それはうまく動作しません。私はこれがURLを要求するとき(私の場合、 'http:// localhost/Default.aspx/GetObject')、ブラウザのURLバーにURLを入れているので、これが呼び出されるからですHTTP GETメソッドを使用します。代わりにPOSTを使用する必要があります。現在、私はデフォルトページにリダイレクトされています。 – ssingh

+1

@ user837610、yes PageメソッドはPOSTリクエストでのみアクセスできます。 '/ Default.aspx/GetObject'のようなGETリクエストで直接呼び出すことはできません。 2番目の方法を試すか、カスタムジェネリックハンドラを書くことができます。 –

+1

さて、私は主にXHRオブジェクト自体からそれを使用するつもりです。だから、GETリクエストがうまく動作しないという懸念はありません。とにかく、ありがとう助けをありがとう:) – ssingh

0
string jsonProperty = Request["JSonProperty"];//your result 
if (!string.IsNullOrEmpty(jsonProperty)) 
{      
    Response.Clear(); 
    Response.ContentType = "application/json"; 
    Response.Write(RenderJSon()); 

    Response.Flush();     // Flush the data to browser 
    Response.SuppressContent = true;  // Suppress further output - "standard" html- 
             // content is not rendered after this 

    return; 
} 
関連する問題