2016-07-10 16 views
3

WebMethodを動作させるのに問題があります。それはすべて正しく設定されており、私はそれを最小の例に単純化しました。AJAXはWebMethodを起動しませんが、成功するとHTMLページ全体を返します

AJAX:(System.Web.Servicesを用いfaq.aspx.csで、;そしてパブリック静的

function DoAJAX() { 
$.ajax({ 
    type: 'POST', 
    url: 'faq.aspx/DoAJAX', 
    data: "AJAX Test", 
    dataType: 'text', 
    success: function (data, status) { 
     debugger; 
     alert(status + " " + data) 
    }, 
    error: function() { 
     alert("error!") 
    } 
}); 
} 

WebMethod属性

[WebMethod] 
    public static string DoAJAX(string foo) { 
     return foo; 
    } 
} 

HTMLfaq.aspxのScriptManagerEnablePageMethods付き)

<%@ Page Title="" Language="C#" MasterPageFile="~/MP.Master" AutoEventWireup="true" CodeBehind="faq.aspx.cs" Inherits="Lottery.faq" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
    <input type="button" value="AJAX" onclick="DoAJAX()" /> 
</asp:Content> 

クリック、AJAX呼び出しがデータに以下の内容で成功を返すとき:http://pastebin.com/X0Vke0qj

ブレークポイントin DoAJAX()WebMethodには決して行きません。

は、なぜそれがWebMethod属性がヒットしなかった理由は、送信された「AJAXテスト」の文字列を返さないのですか?

+0

私はちょうどそれを試してみました、と私は同じを取得返信(データ= HTML文書全体)。 WebMethodのブレークポイントは起動されません。 – Tiago

+0

あなたの 'web.config'に' httpModules'の下に 'ScriptModule'も登録されていますか?それが欠けている場合、どちらもうまくいかないでしょう。 – Scott

+0

Scott:web.configにScriptModuleがありません(かなり空です)。何を追加したらいいですか?また、以前の提案はうまくいかなかった。 ( "エラー!") – Tiago

答えて

1

タイプをjsonに変更し、コンテンツタイプとデータを追加し、fooパラメータをjsonとして渡します。

$.ajax({ 
    type: 'POST', 
    url: 'faq.aspx/DoAJAX', 
    data: "{ 'foo': 'AJAX Test' }", 
    contentType: "application/json; charset=utf-8", 
    dataType: 'json', 
    success: function (data, status) { 
     alert(status + " " + data.d) 
    }, 
    error: function (xhr, status, error) { 
     alert("error!") 
    } 
}); 
+0

私はAJAX全体をコピーし、私の代わりに、それを実行します。私は "エラー!"警戒。 – Tiago

+0

web.configのこれらの編集のようにアプリケーションで他の変更を行った可能性があります。すべての変更を取り消してください。まだエラーが発生した場合は、xhr、ステータス、エラー変数を追加して、どのようなエラーが発生したかを教えてください。 – derloopkat

+0

あなたの答え:xhr:http:// pastebin。com/7kFLWbCd - エラー:「内部サーバーエラー」 – Tiago

0

は、このようにコードを変更します。

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#btnCallAjax").click(function() { 
       DoAJAX(); 
      }); 

      function DoAJAX() { 

       $.ajax({ 
        type: "POST", 
        url: "faq.aspx/DoAJAX", 
        contentType: "application/json;charset=utf-8", 
        data: '{foo:"AJAX Test"}', 
        success: function (data, status) { 
         debugger; 
         alert(status + " " + data.d) 
        }, 
        error: function() { 
         alert("error!") 
        } 
       }); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <input type="button" id="btnCallAjax" value="Call AJAX" /> 
    </form> 
</body> 

コードを背後:

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

    } 
    [WebMethod] 
    public static string DoAJAX(string foo) 
    { 
     return foo; 
    } 
} 
+0

あなたの関数全体をコピーして実行しました。私は "エラー!"警戒。 – Tiago

+0

コードをそのままコピーして貼り付けてください。余分なロジックやコントロールを追加しないでください。それはうまく動作します。私の側では問題なく動作しています –

関連する問題