2011-12-14 5 views
0

JavaScript에서 웹 메서드를 호출하는 VB.Net 페이지에서 작업하고 있습니다.이 작업은 일주일 전부터있었습니다. 현재는 어떤 이유로 작동하지 않습니다. 누군가가 내가 지금 완전히 잃어 버렸던 곳을 어디에서 볼 것인지 생각할 수 있는지 궁금합니다.웹 메서드가 호출되지 않습니다.

첫째 내 페이지를 클릭 할 수있는 항목의 목록이이 수행하는 라인 생성

TicketHTML = TicketHTML + "<td><img src='../images/delete.png' Class='imgTicketClose' alt='Delete Task' onclick='DeleteTicket(" + row("id").ToString() + ")' /></td></tr>" 

내가 항목을 클릭 할 때 얻을로이 작동 알고를 자바 스크립트 팝업 나는 것 때문에 문제가 여기에 없다고 가정합니다.

이제 내 자바 스크립트 :

function DeleteTicket(ticketID) 
    { 
     var answer = confirm("Do you really want to delete this task?") 
     if (answer) 
     { 
      PageMethods.DeleteTask(ticketID); 
      window.location.reload() 
     } 
    } 

나는 웹 메소드가 호출 할 것 같다 결코 페이지 나던 중 하나를 다시로드하는 것 같은 문제가 여기에 가정,하지만 난이 자바 스크립트 경우 실패 할 이유를 이해 해달라고 확인 대화 상자를 표시합니다.

내가 데이터베이스를 프로파일 링 한 것처럼 호출되지 않는다는 것을 알고 있지만 완전성을 위해 여기 내 웹 메서드가 있습니다.

<System.Web.Services.WebMethod()> 
    Public Shared Sub DeleteTask(ticketID As Integer) 
    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString()) 

    Dim cmd As New SqlCommand 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "spDeleteNonTicketItem" 
    cmd.Parameters.AddWithValue("@ItemID", ticketID) 

    cmd.Connection = conn 

    conn.Open() 

    cmd.ExecuteNonQuery() 

    conn.Close() 

    End Sub 

어디에서 볼 수 있습니까? 모든 조언을 크게 주시면 감사하겠습니다. 감사합니다

편집 : web.config 파일의 어떤 것도 페이지 메서드 실행을 방해 할 수 있습니까? 방금 ​​완전히 별도의 웹 메서드를 사용하여이 문제가 발생했으며 경고가있는 자바 스크립트로 전달되는 정수를 확인했는데 모두 유효합니다.

+0

자바 스크립트에서 VB 함수를 실행할 수 있습니까? : O –

+0

@Shvelo yep : DI는이 작업이 잠시 뒤로 돌아 왔지만 왜 더 이상 작동하지 않는지 모르겠다. – Purplegoldfish

+1

C#에서는 메서드를 [WebMethod]로 표시해야하지만 VB에 대해서는 모르겠다. – Erix

답변

1

EDIT - WebMethod 특성이 추가 된 것을 볼 수 있습니다.

한 가지 방법은 페이지 메서드 호출에 오류 처리기를 추가하는 것입니다. 일반적으로 onsuccess 및 onError에 대한 메서드 처리기를 제공 할 수 있습니다.

예를 들어, 다음과 같은 자바 스크립트 방법을 추가 할 수 있습니다 : 다음

function OnFailed(error) { 
    // Alert user to the error. 
    alert(error.get_message()); 
} 

과를, 당신의 PageMethods에 호출 :

function DeleteTicket(ticketID)  
    {  
     var answer = confirm("Do you really want to delete this task?");  
     if (answer)  
     {   
      PageMethods.DeleteTask(ticketID, null, OnFailed);   
      window.location.reload();  
     } 
    } 

은 그냥 example of this와 StackOverflow의 질문을 발견했다. web.config에서 CustomError의 효과에 주목하십시오.

추가 편집.

최근에 출시 한 적이 있습니까?

당신이 있는지 확인해야합니다

를 설정 EnablePageMethods = "true"로 페이지의 스크립트 관리자, 일)

1

2)의 Web.config은 관련 섹션에서 다음 줄이 있어야합니다

<system.web> 
<httpHandlers> 
<remove verb="*" path="*.asmx"/> 
<add verb="*" path="*.asmx" 
type="Microsoft.Web.Script.Services.ScriptHandlerFactory" 
validate="false"/> 
</httpHandlers> 
<httpModules> 
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
</httpModules> 
</system.web> 
+0

답변을 주셔서 감사합니다. WebMethod 속성은 방금 < > 대괄호로 인해 숨겨졌습니다. 나는 그것을 지금 나의 예제에 다시 추가했다. 또한 전혀 오류가 없다. 로컬에서 디버깅을 많이하지 않아도 값을 많이 사용하지 않고 디버깅 할 수는 없으므로이 프로젝트를 제대로 디버깅하는 것이 어렵습니다. 그러나 메신저는 해당 메서드를 누르지 않을 것입니다. – Purplegoldfish

+0

전달되는 정수를 검사하면 유효하지 않으며 유효합니다. 이 문제가 다른 웹 메소드에서 발생하는 것을 보았습니다. 둘 다 일주일 정도 전에 작업했기 때문에, 작동하도록 허용하는 web.config에서 누락 된 것이 있는지 궁금해졌습니다. – Purplegoldfish

+0

대시를 보내주십시오. 스크립트 관리자 였고, 상사가 최적화를 수행하고 작업중인 섹션에 마스터 페이지를 추가했습니다. 스크립트 관리자를 삭제하고 마스터 페이지에 스크립트 페이지를 추가했지만 EnablePageMethods 특성이 누락되었습니다. – Purplegoldfish

2

PageMethod를 실행하려고 시도했는지 확인할 수 있습니까? 예를 들어 중단 점을 설정할 때와 같이 페이지 타격이 발생했는지 확인할 수 있습니까?

나는이 당신에게 문제를 일으키는 지 잘 모릅니다,하지만 난이 봤어 : 세미 콜론을 추가하는 것은 당신에게 문제를 일으키는 경우

function DeleteTicket(ticketID) 
{ 
    var answer = confirm("Do you really want to delete this task?"); 
    if (answer) 
    { 
     PageMethods.DeleteTask(ticketID); 
     window.location.reload(); 
    } 
} 

내가 궁금합니다.

+0

누락 된 자바 스크립트 세미콜론을 보았습니다. JS 함수가 예상대로 작동하지 못하게하는 광택이 나는 새 니켈에 걸었을 것입니다. – mikemanne

+2

믿거 나 말거나, 세미콜론은 선택 사항입니다. 당신이 그들을 사용하지 말아야한다는 것을 의미하지는 않습니다. http://mislav.uniqpath.com/2010/05/semicolons/ – dash

+0

좋은 전화.하지만 자바 스크립트 세미콜론을 추가해 죄송합니다. ( – Purplegoldfish

관련 문제