2009-08-30 22 views
1

私はDefault.aspx.cs内部本当に簡単AJAXメソッドを持っており、それは次のようになります。jQueryのAJAX呼び出し常に

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    [WebMethod] 
    public static string GetDate() 
    { 
     return DateTime.Now.ToString(); 
    } 
} 

そしてDefault.aspxには、次のようになります。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Untitled Page</title> 
    <script type="text/javascript" src="http://192.168.1.2/tizma.com/js/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      // Add the page method call as an onclick handler for the div. 
      $("#Result").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/GetDate", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: AjaxSucceeded, 
       error: AjaxFailed 
      }); 
      }); 
     }); 

     function AjaxSucceeded(result) 
     { 
      alert(result.d); 
     } 

     function AjaxFailed(result) 
     { 
      alert(result.status + " " + result.statusText); 
     } 
    </script> 
</head> 
<body> 
    <div id="Result">Click me</div> 
</body> 
</html> 

問題は、divをクリックすると、ajaxエラー関数はすべて200ステータスで呼び出されたことです。

私は間違っていますか?

data: {}, 

か、にオプションのパラメータだとあなたは完全にラインを省略することができます。

data: "{}", 

それは読んでください:それは問題の原因ですが、あなたは読み込みラインを持っている場合

+0

私はこれを嫌っています。私は自分のサイトを.NET3.5に変更し、.net3.5を許可するようにWebサーバーを設定しました。すべてが今はうまいです。 – Andy

答えて

-2

わかりませんメソッド呼び出し現時点では、問題の原因となるWebメソッドのパラメータを実際に期待しているときに、文字列値に設定しています。

また、行が読み:初心者のために、あなたのWebMethod属性が実際にJSONを返していることは明らかでないため

contentType: "application/json; charset=utf-8", 
dataType: "json", 

は私には不要なようです。私は文字列を返すだけだと思う​​。これらの3行をすべて削除して、それが機能し始めていないかどうかを確認してください。

+0

私はこれら3行を取り出してみましたが、成功メソッドは起動しましたが、実際のWebメソッドは実行されませんでした。成功関数はWebページ全体の結果を取得し、result.dは未定義です。 – Andy

+0

OK、進行中です。その場合、最も簡単な修正は新しいページを作成することです。 Services.aspxのようなもの。それがマスターページを使用していないことを確認し、Visual Studioで生成されたHTMLを取り出してください。.aspxページは最初の行(Pageディレクティブ)しか持たず、Webメソッドをそのページに移動し、ajax呼び出しのurlを更新し、私たちがどのように乗り出すかを見てください – grenade

+0

私は間違った道を歩んできたと思います。私は結果について記事を読んだだけです。これは.NET3.5の変更だったようです。私のサイトは.NET2.0に設定されていて、3.5に変更すると即座に動作しました。 私の質問は今、.NET2.0でこの作業をするために変更する必要があります – Andy

関連する問題