2013-05-29 3 views
0

는이 오류와 몇 가지 다른 게시물을 봐 왔지만, 나는 그에서 제안 모든 노력을하고 여전히 문제가 발생하고있다.비주얼 베이직 닷넷 아약스 전화 : 알 수없는 웹 방식

<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 

난 그냥 준비 문서에 전화 : 알 수없는 웹 방식 GetInvoiceItems :

$(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); 
     } 
    }); 
}); 

이 나에게 오류를 제공

은 여기 내 WEBMETHOD (수업)입니다. 매개 변수 이름 : methodname.

편집 :invoiceID: 22invoiceID: "22" 변경. 여전히 같은 문제가 있습니다.

답변

2

은 내가 문제를 알아 냈다고 생각합니다. 새로운 .asmx 파일을 만드는 대신 기존의 .asmx 파일을 복사했습니다. site.com/UPSImportWebServices.asmx라는 URL에 갔을 때 복사 한 웹 서비스의 기능을 보여주었습니다. .asmx 파일을 삭제하고 새 파일을 만든 다음 이전 코드를 복사했습니다. 지금 일하고있다.

또한 '{ invoiceId:' + 22 + '}' 변경. '와 대문자를주의하십시오. 신나는 실수.

+1

JSON 문자열을 수동으로 생성하는 대신'JSON.stringify'를 사용하십시오. 깨끗하고 모듈 식입니다. –

+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"는 대문자로 표기된 반면 웹 메소드는 "invoiceId"(소문자 d)로 간주합니다.

관련 문제