>  기사  >  웹 프론트엔드  >  jQuery는 Json을 결합하여 Webservice에 데이터를 제출하고 Webservice_jquery에서 반환된 Json 데이터를 받습니다.

jQuery는 Json을 결합하여 Webservice에 데이터를 제출하고 Webservice_jquery에서 반환된 Json 데이터를 받습니다.

WBOY
WBOY원래의
2016-05-16 18:10:41996검색

jQuery ajax 웹 서비스: 가져오기 및 게시
1. GET 메서드
클라이언트

코드 복사 코드는 다음과 같습니다.

var data = { classCode: "0001"} // JOSN 객체는 여기서 직접 사용됩니다.
$.ajax({
type: "GET ",
contentType: "application/json; charset=utf-8",
url: "/WebServices/ProductPropertyWebService.asmx/GetProductPropertyList",
dataType: "json",
anysc: false ,
data: data,
success: RenderProperties,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown ':' textStatus) // 오류 처리
}
} ; 다음과 같습니다:

[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] //UseHttpGet = true public List GetProductPropertyList()
{
string classCode = HttpContext.Current.Request["classCode"]; // 쿼리 문자열의 매개변수 값을 가져오는 Get 메서드
return PropertyManager.GetPropertySet(classCode, "zh-CN").DataList;
} 2. POST 방식클라이언트
코드




코드 복사


코드는 다음과 같습니다.

var data = '{ classCode: "' classCode '", city: "GuangDong" }' // 접합된 ​​JOSN 여기서 문자열을 사용해야 합니다
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/WebServices/ProductPropertyWebService. asmx/GetProductPropertyList", });


서버측

코드




코드 복사


코드는 다음과 같습니다.

[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)] // UseHttpGet = false
public List GetProductPropertyList(string classCode, string city) // 게시 메서드, 매개변수 JSON 필드 속성에 대응하고 {
return PropertyManager.GetPropertySet(classCode, "zh-CN").DataList
}
을 사용하여 자동으로 값을 할당합니다. 참고: GET 메서드 및 POST 메서드 이와 다르게 매개변수가 있는 경우 매개변수 값이 ASCII 문자(예: 중국어)가 아닌 경우 GET 매개변수를 encodeURI 인코딩해야 합니다. 그렇지 않으면 서버에서 수신한 데이터가 왜곡됩니다. 복잡한 Json 데이터 제출{ name: Yangjun, age:27 }과 같은 간단한 Json 형식 데이터 복잡한 Json 형식 데이터는 실제로 다음과 같은 Json 중첩입니다. 양준, 나이:27, 아이:[{이름:양케, 나이:1},{이름:양빈, 나이:2}]}
이런 복잡한 Json 형식의 데이터를 제출해야 한다면, 그런 다음 이 Json 형식 문자열을 기반으로 .net 개체로 시퀀스합니다.
예를 들어 다음 데이터를 제출하고 싶습니다.

클라이언트:

코드



코드 복사
코드는 다음과 같습니다.


var productPropertyTemplate = {"ProductId":10024, "PropertyList":[
{"PropertyId":18, "PropertyType":" text", "PropertyValue ":"숫자는 100입니다"}, {"PropertyId":19, "PropertyType":"checkbox", "PropertyValue":"57|28"}]} $. ajax({
유형: "GET",
contentType: "application/json; charset=utf-8",
url: "/WebServices/ProductPropertyWebService.asmx/PostProductPropertyList", anysc: false, data : { propertyList: productPropertyTemplate }, dataType: "json", success: function (result) { Alert(result.d) }, error: function (XMLHttpRequest, textStatus , errorThrown) { alert(errorThrown ':' textStatus)
}
});
서버 측:
1. Json 문자를 .net 객체로 역직렬화하기 위해 .net 버전 3.5 이상과 함께 제공되는 DataContractJsonSerializer를 사용합니다. 클래스:
코드
코드 복사 코드는 다음과 같습니다.

/// /// Json 직렬화 및 역직렬화를 위한 도우미 메서드
///

공개 클래스 JsonHelper
{
/// ; >/// JSON 직렬화: 객체를 Json 형식 문자열로 직렬화
///

공개 정적 문자열 JsonSerializer(T t)
{
var ser = new DataContractJsonSerializer (typeof(T));
var ms = new MemoryStream();
ser.WriteObject(ms, t)
string jsonString = Encoding.UTF8.GetString(ms .ToArray()); 🎜>ms.Close();
return jsonString;
}
///
/// JSON 역직렬화: Json 형식 문자열에 따라 개체
/ //

public static T JsonDeserialize(string jsonString)
{
var ser = new DataContractJsonSerializer(typeof(T))
var ms = new MemoryStream(Encoding) .UTF8.GetBytes(jsonString));
var obj = (T)ser.ReadObject(ms);
return obj;
}
}


2. 해당 개체로 역직렬화해야 하므로 먼저 두 개의 개체 클래스를 구성합니다. 각 클래스 앞의 특성 수정자와 클래스 필드에 주의하세요.
Code



코드 복사 코드는 다음과 같습니다. [DataContract]
public class MProductProperty
{
[DataMember(Order = 0, IsRequired = true)]
public int ProductId { set; get; }
[DataMember(Order = 1, IsRequired = true)]
public List
}
공용 클래스 MProperty
{
[DataMember(Order = 0, IsRequired = true)]
public int PropertyId { set; , IsRequired = true)]
공용 문자열 PropertyType { 집합; }
[DataMember(Order = 2, IsRequired = true)]
공용 문자열 PropertyValue }
}


3. Json 데이터를 받아 처리하는 웹 방식:
코드



코드 복사
코드는 다음과 같습니다: [WebMethod] [ScriptMethod(UseHttpGet = true)]
public string PostProductPropertyList()
{
string jsonString = HttpContext.Current . Request["propertyList"];
var productProperty = JsonHelper.JsonDeserialize(jsonString); // productProperty가 MProductProperty 객체로 성공적으로 역직렬화되었습니다.
//수신 성공 표시 반환
return "postsuccess" ;
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.