2014-01-18 7 views
3

JQuery에서 C# 함수를 호출하고 있지만 오류가 발생했습니다.C# 메서드가 작동하지 않는 JQuery 코드

JQuery 함수는 ascx 파일로 작성되고 호출 할 C# 함수는 해당 페이지의 코드 뒤에 작성됩니다. 탭 변경 이벤트에서 AJAX 탭에 사용자 정의 컨트롤을로드하는 중입니다.

인터넷 검색, 나는 사용자 정의 컨트롤에서 작성된 C# 함수를 호출 할 수 없다는 것을 알아 냈습니다. 그래서 호스트 페이지 (ASPX)에 함수를 작성했고이 함수는 사용자 컨트롤 함수를 호출합니다.

그러나 AJAX 요청은 실패하는 방법 중 일부입니다. 하지만 흥미로운 점은 오류 함수에 디버거를 보관하고 오류 개체를 검사했기 때문입니다.

상태 readyState가 4

과에서 responseText는 페이지의 마크 업이며, 상태는 OK입니다, 200입니다. 즉, 페이지가 제공되지만 C# 함수에서 중단 점이 유지됩니다. 절대로 안타.

나는 무슨 일이 일어나고 있는지 전혀 모른다. 또한 프런트 엔드에서 C# 함수를 호출하는 것은 이번이 처음입니다. 후드에서 무슨 일이 일어나는지에 대한 상세한 아이디어가 없습니다. 도와주세요. 아래는 코드입니다 JQuery와는

$(function() { 
      $(".hint ul li").click(function() { 
       // remove classes from all 
       $(".hint ul li").removeClass("active"); 
       // add class to the one we clicked 
       $(this).addClass("active"); 
       //Ankit J, Implement logic to call jquery 
       var Availability = this.childNodes[0].innerText.trim(); 
       debugger; 
       $.ajax({ 
        type: "POST", 
        url: "../Pages/MyPage.aspx/CallUCMethodFromJQuery", 
        data: "{'sAvailability' : 'Availability'}", 
        dataType: "json", 
        success: fnsuccesscallback, 
        error: fnerrorcallback 
       }); 
      }); 
     }); 

     function fnsuccesscallback(data) { 
      alert("success-->" + data.d); 
     } 
     function fnerrorcallback(result) { 
      debugger; 
      alert("error-->"+result); 
     } 
다음

[System.Web.Services.WebMethod] 
public void CallUCMethodFromJQuery(string sAvailability) 
{ 
    MyNamespace.UserControls.ControlName m = new UserControls.ControlName(); 
    m.EditAvailabilityValue(sAvailability); 
} 

그리고 기능 뒤에

ASPX 페이지의 코드 언급하지 죄송합니다

public void EditAvailabilityValue(string sAvailability) 
{ 

} 

뒤에있는 UserControl의 코드 .... JQuery와에 클릭 이벤트의 소스가 사용자 컨트롤에있는 li 요소이기 때문에 사용자 정의 컨트롤. 또한 UserControl은 UserControls 폴더에 있으며 호스트 페이지는 Pages 폴더에 있으며이 두 폴더는 루트 폴더에 있습니다.

답변

1

추가 contentType: "application/json; charset=utf-8" 아약스 호출 속성 :

public static void EditAvailabilityValue(string sAvailability) 
{ 

} 

을 그렇게 static에 뒤에 영문 페이지 코드에 CallUCMethodFromJQuery 방법을 변경 :

$.ajax({ 
    type: "POST", 
    url: "../Pages/MyPage.aspx/CallUCMethodFromJQuery", 
    data: "{'sAvailability' : 'Availability'}", 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    success: fnsuccesscallback, 
    error: fnerrorcallback 
}); 

다음 정적에 사용자 컨트롤에 EditAvailabilityValue 방법을 변경 jQuery를 사용하여 호출 할 수 있습니다.

[System.Web.Services.WebMethod] 
public static void CallUCMethodFromJQuery(string sAvailability) 
{ 
    MyNamespace.UserControls.ControlName.EditAvailabilityValue(sAvailability); 
} 
+0

언급하지 않음 죄송합니다 ... click 이벤트의 소스가 사용자 정의 컨트롤에있는 li 요소이기 때문에 JQuery가 사용자 정의 컨트롤에 있습니다. 또한 UserControl은 UserControls 폴더에 있으며 호스트 페이지는 Pages 폴더에 있으며이 두 폴더는 루트 폴더에 있습니다. – user2861226

+0

내 업데이트 된 답변보기 – ekad

+0

감사합니다 백만 ekad, 그것은 매력처럼 작동했습니다. 그러나, 나는 EditAvailabilityValue를 정적으로 만들지 않았지만 CallUCMethodFromJQuery는 확실히 정적 일 필요가 있고 content type 또한 필요합니다. 어딘가에 JSON 값이 아닌 값을 보내면이 속성을 넣을 필요가 없습니다. 개념을 이해하는 데 도움이되는 설명. – user2861226