2011-11-09 11 views
0

私のアプリケーションには2つのaspxページがあります。最初のものから、default.aspxと言うと、私は1つのボタンと1つのテキストボックスを持っています。私はボタンをクリックすると、私はcheckname.aspxページからaspxページのメソッドへのJquery ajax呼び出し

  function docheck() { 

      var un = $('#username').val(); 


      $.ajax({ 

       url: "checkname.aspx", 
       data: { name: un, method: 'checkname' }, 
       dataType: 'script', 
       success: function (val) { 

        if (val == "No") 
         alert("not valid"); 
        else 
         alert("valid!"); 

       } 

      }); 
     } 

以下のようにcheckname.aspxへのAJ​​AX呼び出しを行う、私は以下のような操作を行うが、それは、応答は、応答にcheckname.aspxページのHTMLを追加していますだから、ajaxコールの成功メッセージは私の望むものにならなかった。 CheckNameメソッドが送信するものを送信するにはどうすればよいですか。

checkname.aspx.cs事前に

protected void Page_Load(object sender, EventArgs e) 
    { 


    NameValueCollection queries = HttpUtility.ParseQueryString(Request.QueryString.ToString()); 

    if(queries["method"] == "checkname") 
     this.CheckName(queries["name"]); 
} 

protected void CheckName(string Name) 
{ 
    if (Name == "ryu") 
    { 
     HttpContext.Current.Response.Write("No"); 
     return; 
    } 

    HttpContext.Current.Response.Write("Yes"); 
} 

おかげで、あなたのaspx要求を処理して終了する

+2

こんにちは。これを実現するには、Webサービスまたはasp.net PageMethodsの使用を検討する必要があります。 PageMethodを作成する方法と、jQueryを使用してそれを消費する方法についての記事[here](http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/)があります。 –

+0

@DidierG。アドバイスをありがとう。 –

答えて

1

コールHttpContext.Current.Response.End();、そうでない場合は、Page_Loadの中にその呼び出しの後にすべてのものは、あなたがこのように、正常に処理されますあなたが説明した結果が得られました。

一般的に、ここでは他の人のアドバイスに従い、AJAXリクエストをさまざまな方法で処理します。

+0

私は何が言えるのですか(ありがとうございました –

+0

言葉を言わないで、ただ受け入れます;) – Bartosz

2

これは、Ajaxリクエストを処理するのに非常にぎこちない方法です。このメソッドは、そのメソッドがそのページとは何の関係もないことに注意してください。 (Ajaxのコンテキストでは、ページのコントロール階層全体が無意味です)。

代わりにWCFを使用することをお勧めします。 this tutorial