【问题标题】:vb .net ajax call: unknown web methodvb .net ajax 调用:未知的网络方法
【发布时间】:2013-05-29 16:02:35
【问题描述】:

我已经看到了一些其他有此错误的帖子,但我已经尝试了其中建议的所有内容,但仍然遇到问题。

这是我的 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。仍然有同样的问题。

【问题讨论】:

    标签: asp.net ajax vb.net json


    【解决方案1】:

    我想我找到了问题所在。我复制了一个现有的 .asmx 文件,而不是创建一个新文件。当我访问 url site.com/UPSImportWebServices.asmx 时,它显示了我复制的 Web 服务的功能。我删除了那个 .asmx 文件并创建了一个新文件,然后复制了我的旧代码。它现在正在工作。

    另外,改为'{ invoiceId:' + 22 + '}'。注意 ' 和大写。新手犯了这个错误。

    【讨论】:

    • 使用JSON.stringify代替手动构造JSON字符串;它更清洁和模块化。
    【解决方案2】:

    好吧,我认为这可能与您传递的变量类型有关。 GetInvoiceItems 需要一个整数,您正在向它传递一个字符串。尝试改变这个

    data: { invoiceID: "22" },
    

    到这里:

    data: { invoiceID: 22 },
    

    让我知道这是否有效。如果没有,我们可以转到下一个可能性。

    尝试改变这个:

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

    到这里:

     url: 'UPSImportWebServices.asmx/GetInvoiceItems',
    

    并确保您的 asmx 文件的拼写正确(区分大小写)

    最后,尝试将您的方法设为公开,而不是公开共享。

    【讨论】:

    • 好收获。我进行了更改,但仍然遇到同样的问题。
    • 我编辑了我的回复以尝试更多的东西。让我知道它是否仍然失败
    • 再次感谢,但在进行这些额外更改后仍然遇到同样的问题。
    • 您知道如何在 FireFox 中使用 Web 控制台吗?这应该向您显示一个错误。在控制台打开的情况下运行您的应用程序,让我知道错误是什么。
    • 我想我找到了问题所在。我复制了一个现有的 .asmx 文件,而不是创建一个新文件。当我访问 url site.com/UPSImportWebServices.asmx 时,它显示了我复制的 Web 服务的功能。我删除了那个 .asmx 文件并创建了一个新文件,然后复制了我的旧代码。它现在正在工作。感谢您的帮助,很抱歉浪费了您的时间。
    【解决方案3】:

    尝试这样做。

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

    网络服务需要一个 JSON 字符串。

    此外,参数区分大小写。您在“invoiceID”中的“D”是大写的,而 Web 方法期望它是“invoiceId”(小写 d)。

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多