2010-07-31 2 views
0

기본적으로 사용자가 입력하기를 원하고 처리를 위해 서버로 이동 한 다음 비동기 적으로 반환하고 내용을 div에로드 한 다음 페이드 인하는 사이트가 있습니다. jQuery. 이 일을 수행하는 가장 좋은 방법은 무엇입니까? 단지에서 Default.aspx의 내용을 반환 -서버에 데이터 전달 및 비동기 업데이트

$(document).ready(function() { 
    $('#output-box').hide(); 
    $('#form1').submit(function() { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/ParseData", 
      data: "{ $('#txtInput').val() }", 
      success: function (msg) { 
       $('#output-box').text(msg).fadeIn(); 
      } 
     }); 
     return false; 
    }); 
}); 

그것은 작동하지 않습니다이 :

현재 여기 내 "솔루션"입니다. 그렇다면 #txtInput의 내용을 Default.aspx.vb의 ParseData 함수에 제대로 보내려면 어떻게해야합니까? 또한, 이것을 달성하는 가장 좋은 방법은 이와 같은 것입니까? 데이터를 보내기 위해 jQuery를 사용해야하는지, 아니면 단순히 함수를 호출하고 데이터 서버 측을 잡고 결과 div의 정보를 입력 한 다음 jQuery를 사용하여 표시해야합니까?

또한

, 나는

+1

WebMethod 특성이있는 메서드는 정적 메서드이므로 ViewState 또는 다른 인스턴스 별 프로에 액세스 할 수 없다는 것을 알아야합니다. 당신의 페이지의 perties. 다음은 asp.net 블로거의 실제 예입니다. http://weblogs.asp.net/craigshoemaker/archive/2008/11/07/using-jquery-to-call-asp-net-ajax-page-methods-by -example.aspx –

+2

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/ –

+1

내가 사용하지 않을 수도 있습니다. WebMethod는 전혀 작동하지 않을 것입니까? – Radu

답변

1

에, 당신은 요청에 application/json의 ContentType을 설정해야합니다. 또한 jQuery가 응답을 올바르게 해석하도록 dataType을 json으로 설정해야합니다.

$.ajax({ 
    type: 'POST', 
    url: 'Default.aspx/ParseData', 
    data: '{ "strUserInput" : ' + $('#txtInput').val() + ' }', 
    dataType: 'json', 
    success: function (msg) { 
    // If ASP.NET 2.0: 
    $('#output-box').text(msg).fadeIn(); 

    // If ASP.NET 3.5+: 
    $('#output-box').text(msg.d).fadeIn(); 
    } 
}); 

거기 .D 문제에 대한 추가 정보를 원하시면이 게시물을 참조하십시오 : http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

서버 측 방법은 다음과 같이 정의한다 :

[WebMethod] 
public static ParseData(string strUserInput) 
{ 
    return "Message"; 
} 

이 게시물 모두를 꽤 잘 커버를 : http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

+0

좋은 답변입니다. 또한 나중에 사용할 수 있도록 블로그를 북마크해야합니다. 파티에 확실히 늦었지만 레버보다 더 잘 어울립니다. – Radu

0

변경이

data: "{ $('#txtInput').val() }", 

에 .. 비슷한 질문을 발견했습니다 (자신 비슷한 질문을했다) 그러나 나는 아직 일을 할 수 없었다
data: $('#txtInput').val(), 
0

나에게 확인을 보이는,하지만 당신은 라인을 변경하려고 할 수 있습니다

data: "{ $('#txtInput').val() }", 
을3210

다른 제안에 추가

data: $('#txtInput').val(), 
+0

작동하지 않지만 여전히 .aspx의 전체 내용을 반환합니다. 내 함수는 서버 측에 잘 맞다고 가정합니다. 전용 함수 ParseData (ByVal strUserInput As String) As String – Radu

관련 문제