2013-05-29 78 views
0

我看到了一些其他帖子出現這個錯誤,但我已經嘗試了所有這些建議,並且仍然有問題。vb .net ajax調用:未知的網絡方法

這是我的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。參數名稱:methodname。

編輯:更改invoiceID: "22"invoiceID: 22。仍然有同樣的問題。

回答

2

我想我想出了這個問題。我複製了一個現有的.asmx文件,而不是創建一個新文件。當我訪問網站site.com/UPSImportWebServices.asmx時,它顯示了我複製的Web服務的功能。我刪除了.asmx文件並創建了一個新文件,然後複製了我的舊代碼。它正在工作。

另外,更改爲'{ invoiceId:' + 22 + '}'。注意'和大寫。在這一個新人的錯誤。

+1

使用'JSON.stringify'而不是手動構建JSON字符串;它更乾淨和模塊化。 –

+0

會做。謝謝! – PFranchise

1

嗯,我想這可能與你傳遞的變量類型有關。 GetInvoiceItems期待一個整數,你傳遞一個字符串。嘗試做改變這種

data: { invoiceID: "22" }, 

這樣:

data: { invoiceID: 22 }, 

,讓我知道是否可行與否。如果沒有,我們可以轉向下一個可能性。

嘗試修改此:

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

這樣:

url: 'UPSImportWebServices.asmx/GetInvoiceItems', 

,並確保您的ASMX文件的拼寫是否正確(區分大小寫)

,最後,請嘗試將方法只是公共,而不是公共共享。

+0

好的。我做了這個改變,但仍然有同樣的問題。 – PFranchise

+0

我編輯了我的回覆,嘗試了更多的東西。讓我知道如果它仍然失敗 – jason

+0

再次感謝,但進行這些額外的更改後仍然有相同的問題。 – PFranchise

1

嘗試這樣做。

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

webservice需要一個JSON字符串。

另外,參數區分大小寫。您的「invoiceID」中的「D」是大寫,而Web方法期望它是「invoiceId」(小寫d)。