2009-09-12 3 views
1

클라이언트 측 스크립팅을 사용하는 ASP.NET에서 등록 양식을 개발 중입니다. 그래서 jQuery.ajax 메서드를 사용하여 모든 필드의 데이터를 ASP.NET 웹 서비스를 통해 서버에 POST했습니다. 하지만 Jquery.ajax 메서드를 실행하면 오류 함수가 호출됩니다. Firefox에서 Firebug를 사용하여 디버깅하려했습니다. 오류 500 내부 서버 오류가 나타났습니다. 이제는 WebService에 데이터를 삽입하려면 POST 메서드를 사용해야하고 마찬가지로 POST 메서드를 사용하여 호출 할 수있는 Webservice 내부의 서버 측 함수가 필요하다고 가정합니다. 내가 한 일을 설명하기위한 몇 가지 코드 조각을 제공하고 있습니다.웹 서비스에 대한 jQuery.ajax 호출 문제

내 클라이언트 스크립트 : 서버에서

//My Client Side Function 
function registerUser() 
{ 
    var User = { 
     FirstName:$get("txtFirstName").value, 
     LastName:$get("txtLastName").value 
     . 
     . 
     //and so on....This way I creat my json object to POST on server 
     }; 

     //jQuery to POST Data 
     jQuery.ajax({ 
     type:"POST", 
     url:"Service/UserRegistration.asmx/InsertUser", 
     data:User, 
     success:notifyUser, 
     error:setErrorField 
     }); 

} 

//Function for Success Complition 
function notifyUser(msg) 
{ 
     alert("Registration Successfull"); 
} 

내 웹 서비스 :

//My C# Web Service Logic 
[WebMethod] 
public void InsertUser(User use) 
{ 
     FreeUser us = new FreeUser(); 
     us.FirstName = use.FirstName; 
     . 
     . 
     //and so on 
} 

이제 제가 생각하는 것은 POST 방법은 속성으로 WebInvoke 클래스를 필요로한다는 것이다. JavaScript로 호출 할 수있는 메소드는 어떻게 만들 수 있습니까? 이 경우 WebInvoke을 사용해야 할 수도 있습니다. 당신은 JSON 객체를 제출하는 경우

답변

6

을 서버 측 (ASP.NET 2.0 + ASP.NET에서 사용할 수 ASP.NET의 AJAX가있는 경우 AJAX Extension v1.0 또는 ASP.NET 3.5 이상)을 사용하여 가장 쉬운 방법은 클라이언트와 서버 측 사이에서 JSON을 사용하는 것입니다. 여기에 전체 게시물 추가 정보를 위해

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "WebService.asmx/WebMethodName", 
    data: "{}", 
    dataType: "json" 
}); 

, 참조 : http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ 위해

에 당신은 당신의 서비스에 [ScriptService] 속성을 추가 한 다음 서비스를 호출하기위한이 양식을 사용해야합니다 해당 예제 코드에서와 같이 JavaScript 객체를 제공하면 use JSON.Stringify to generate an appropriate JSON string to pass to the server-side도 필요합니다.

0

, $.ajax에 다음 옵션을 추가 :

contentType: "application/json; charset=utf-8", 
관련 문제