0

このエラーに関する他の投稿をいくつか見ましたが、それらで提案されているすべてを試しましたが、まだ問題が発生しています。

これが私のwebMethod(およびクラス)です:

<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class UPSImportWebServices
    Inherits System.Web.Services.WebService

    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
    <WebMethod()> _
    Public Shared Function GetInvoiceItems(ByVal invoiceId As Integer) As List(Of UPSInvoiceItem)
        Return UPSInvoiceDataAccess.getInvoiceItems(invoiceId)
    End Function

End Class

ドキュメントの準備ができたらこれを呼び出すだけです:

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: '<%=ResolveUrl("~/UPSImportWebServices.asmx/GetInvoiceItems") %>',
        data: { invoiceID: "22" },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert('worked' + data)
        },
        error: function (response) {
            alert('error: ' + response.responseText);
        },
        failure: function (response) {
            alert('failure: ' + response.responseText);
        }
    });
});

これにより、次のエラーが表示されます: 不明な Web メソッド GetInvoiceItems. パラメーター名: メソッド名。

編集:に変更invoiceID: "22"されましたinvoiceID: 22。まだ同じ問題があります。

4

3 に答える 3

1

まあ、これはあなたが渡す変数のタイプに関係していると思います。GetInvoiceItems は整数を期待していますが、文字列を渡しています。これを変更してみてください

data: { invoiceID: "22" },

これに:

data: { invoiceID: 22 },

それがうまくいくかどうか教えてください。そうでない場合は、次の可能性に進むことができます。

これを変更してみてください:

url: '<%=ResolveUrl("~/UPSImportWebServices.asmx/GetInvoiceItems") %>',

これに:

 url: 'UPSImportWebServices.asmx/GetInvoiceItems',

asmxファイルのスペルが正しいことを確認してください(大文字と小文字を区別します)

最後に、メソッドを Public Shared ではなく Public にしてみてください。

于 2013-05-29T16:06:49.370 に答える
1

これをやってみてください。

data: JSON.stringify({ invoiceId: 22 })

Web サービスは JSON 文字列を想定しています。

また、パラメーターでは大文字と小文字が区別されます。「invoiceID」の「D」は大文字になっていますが、Web メソッドでは「invoiceId」(小文字の d) であると想定されています。

于 2013-05-29T16:15:38.630 に答える