1

今日jQuery ajaxの学習を始めたばかりで、チュートリアルの指示に従いましたが、うまくいきませんでした。

HelloWorldはメソッド名ですが、エラーメッセージからするとメソッド名ではなくページ名として認識されているようです。

jQuery

$(document).ready(function () {
    //alert("hello world");
    $('.ordernumber').on('click', function () {
        var orderNum = $(this).text();
        $.ajax({
            type: "POST",
            url: "./OrderDetail.asmx/HelloWorld",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg);
                // Do interesting things here.
            }
        });
        //alert($(this).text());

    });
});

OrderDetail.asmx.vb

Imports System
Imports System.Web.Services

Public Class OrderDetail
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

End Class

エラーメッセージ:

POST http://localhost:64616/OrderDetail.asmx/HelloWorld 500 (Internal Server Error)
4

2 に答える 2

3

<System.Web.Script.Services.ScriptService()>クラスに追加する必要があると思います。

<System.Web.Script.Services.ScriptService()> _
Public Class OrderDetails
    Inherits System.Web.Services.WebService

    '' rest of your code

End Class

また、Json を返すには、メソッドを装飾する必要があります。

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _

アップデート

新しい ASMX Web サービスを作成するとき、既定のコードは次のように述べています。

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
于 2013-08-21T21:19:59.367 に答える
1

JSON が返されることを期待していますが、asmx Web サービスは XML を返し、代わりに追加する必要があります

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>_
Public Function HelloWorld() As String
 Return "Hello World"
End Function

詳細説明へのリンク

于 2013-08-21T21:22:48.000 に答える