jQuery 는 JSon 과 결합 하여 웹 서비스 에 데 이 터 를 제출 하고 웹 서비스 에서 돌아 온 JSon 데 이 터 를 받 습 니 다.

5618 단어 Json데이터 제출
jQuery ajax webservice:get 과 post 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<Property> 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",
dataType: "json",
anysc: false,
data: data, // Post ,data "", , "{}", contentType Request Headers 。
success: RenderProperties,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown + ':' + textStatus); //
}
});
서버 엔 드 코드
 
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)] // UseHttpGet = false
public List<Property> GetProductPropertyList(string classCode, string city) // Post , JSON ,
{
return PropertyManager.GetPropertySet(classCode, "zh-CN").DataList;
}
주의:GET 방법 은 POST 방법 과 다 르 고 매개 변수 가 있 을 때 매개 변수의 값 이 ASCII 문자(예 를 들 어 중국어)가 아니라면 GET 의 매개 변 수 는 encodeURI 인 코딩 을 해 야 합 니 다.서버 에서 받 은 데 이 터 를 어 지 럽 히 지 않 으 면복잡 한 제 이 슨 데 이 터 는{name:Yangjun,age:27}복잡 한 제 이 슨 형식의 데 이 터 를 제출 합 니 다.예 를 들 어{name:yangjun,age:27,child:[{name:yangke,age:1},{name:yangbin,age:2}}이런 복잡 한 제 이 슨 형식의 데 이 터 를 제출 하고 웹 서비스 에서 가 져 온 다음 에 이 제 이 슨 형식의 문자열 에 따라.net 대상 으로 서열 을 정 하 는데 어떻게 해 야 하나 요?예 를 들 어 저 는 다음 과 같은 데 이 터 를 제출 하려 고 합 니 다.클 라 이언 트:코드
 
var productPropertyTemplate = {"ProductId":10024, "PropertyList":[
{"PropertyId":18, "PropertyType":"text", "PropertyValue":" 100"},
{"PropertyId":19, "PropertyType":"checkbox", "PropertyValue":"57|28"}]}
$.ajax({
type: "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 버 전 이상 자체 가 가지 고 있 는 DataContractJson Serializer 를 사용 하고 보조 류 를 쓰 려 고 합 니 다.코드
 
/// <summary>
/// Json
/// </summary>
public class JsonHelper
{
/// <summary>
/// JSON : Json
/// </summary>
public static string JsonSerializer<T>(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;
}
/// <summary>
/// JSON : Json ,
/// </summary>
public static T JsonDeserialize<T>(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.반 직렬 화 를 해당 하 는 대상 으로 해 야 하기 때 문 입 니 다.따라서 먼저 두 개의 대상 클래스 를 구성 하고 각 클래스 와 클래스 의 필드 앞의 특성 수정 부호:코드
 
[DataContract]
public class MProductProperty
{
[DataMember(Order = 0, IsRequired = true)]
public int ProductId { set; get; }
[DataMember(Order = 1, IsRequired = true)]
public List<MProperty> PropertyList { set; get; }
}
public class MProperty
{
[DataMember(Order = 0, IsRequired = true)]
public int PropertyId { set; get; }
[DataMember(Order = 1, IsRequired = true)]
public string PropertyType { set; get; }
[DataMember(Order = 2, IsRequired = true)]
public string PropertyValue { set; get; }
}
3.제 이 슨 데 이 터 를 수신 하고 처리 하 는 웹 방법:코드
 
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string PostProductPropertyList()
{
string jsonString = HttpContext.Current.Request["propertyList"];
var productProperty = JsonHelper.JsonDeserialize<MProductProperty>(jsonString); // productProperty MProductProperty
//
return "postsuccess";
}

좋은 웹페이지 즐겨찾기