0

jQuery.ajaxでaspxのコードビハインドファイルからラベルをクリックして、SendInfoメソッドを呼び出そうとしています。しかし、常に成功ではなく「エラー」部分になり、メソッドから文字列が返されません。

教えてください、私はここで何が間違っていますか?

ajaxを学び始めたばかりです。

インデックス.aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type='text/javascript' src='../../Scripts/jquery-1.4.1.min.js'></script>
<script type="text/javascript" >
    $(document).ready(function () {
        $("#Result").click(function () {
            $.ajax({
                type: "POST",
                url: "Index.aspx/SendInfo",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $("#Result").text(msg.d);
                },
                error: function () {
                    $("#Result").text("adas");
                }
            });
        });
    });
</script>
<div id="Result">Click here for the time.</div>
</asp:Content>

コードビハインド ファイル:

public class Index : ViewPage
{
    [WebMethod]
    public static string SendInfo()
    {
        return "Info actually sended";
    }
}
4

1 に答える 1

0

一見すると、「dataType」パラメーターが「json」に設定されていることが原因である可能性があります。これは、JSON オブジェクトが返されることを期待していることを示しているため、応答をそのように解析しようとし、その結果、プレーンテキストであるため失敗します。

「dataType」パラメーターを完全に (および空の「data」パラメーターも) 削除するだけで、jQuery は返されたコンテンツについて推測する危険があり、この場合、応答がプレーンテキストであることを正しく予測する必要があります。

AJAX ロケーションの完全修飾 URL を指定し、success 関数の「msg.d」を単に「msg」に変更する必要がある場合もありますが、これはサーバーに設定された特定のオプション (「.d」 Microsoft によって導入されたセキュリティ機能です)。

于 2013-03-30T14:31:25.100 に答える