>  기사  >  웹 프론트엔드  >  jquery ajax, ashx, json_jquery 사용법 요약

jquery ajax, ashx, json_jquery 사용법 요약

WBOY
WBOY원래의
2016-05-16 17:00:421058검색

jquery에서 제공하는 ajax 호출 메소드의 단순화된 버전은 일반적으로 다음과 같습니다.

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

function post() {
$("#divWait").show()
$("#btnPost").attr("disabled", "disabled" );
$.post("../PostIt.ashx",
                                                                     함수(데이터) {
.indexof ('ok') & gt -1) {
경고(데이터) ;
}
그렇지 않으면 {

                                                                         비활성화됨", "");                                          

개발 중에 json 형식으로 반환값을 받아야 하는 경우 위의 방법은 안되는 것 같습니다. 텍스트의 텍스트 줄을 허용하는 것 같습니다. 따라서 jQuery의 기본 Ajax 구현 방법이 채택됩니다.

이 방법에도 매개변수가 많이 있습니다. 자세한 내용은 도움말 문서를 참조하세요. 나의 평소 사용법



코드 복사


코드는 다음과 같습니다.


function doPostAjax(){
$("#divWait").show()
$("#btnPost").attr("disabled", "disabled")
> ~    데이터: { msgContent: $("# msgContent").val() },
시간 초과: 60000,
오류: 함수 (XMLHttpRequest, textStatus, errorThrown) {/ /요청 오류 시 실행되는 메서드
Alert("error!" errorThrown);
                                                                                                    성공: function (data, txtSataus) {//요청이 성공했을 때 실행되는 메서드 ("#btnPost") .attr("disabled ", "");
                                                                                        
                  });

context.Response.ContentType = "application/json";

html이나 text로 반환되는 경우 다음과 같이 작성할 수 있습니다

context.Response.ContentType = "텍스트/일반";

ajax 메소드에 설정된 반환 값이 json인 경우 ashx 코드에서 반환하는 형식은 json 형식의 데이터여야 합니다.
객체를 json 형식으로 변환하는 일반적인 방법은 오픈 소스 타사 클래스 라이브러리인 json.net, Newtonsoft.Json.dll을 사용하는 것입니다.

JsonConvert.SerializeObject 메서드를 사용하여 변환할 수 있습니다. json 형식을 반환한 후 jquery는 XXX.xxx를 사용하여 값을 얻을 수 있습니다.

JsonConvert는 날짜/시간 형식을 처리할 때 1198908717056과 유사한 절대값을 반환하므로 날짜/시간을 처리할 때 일부 변환이 필요합니다. 구체적인 문장은 다음과 같습니다.


IsodateTimeConverter TimeConverter = New IsodatetimeConverter (); // 여기서는 사용자 정의 날짜 형식을 사용합니다. yy '-' mm '-' dd ' 'HH':'mm':'ss";

문자열 출력 = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter);

그런데, 자바스크립트는 json 형식 데이터를 처리하는 자연스러운 능력을 갖고 있으며 json 형식 데이터와 매우 호환됩니다.

예:


코드 복사

코드는 다음과 같습니다.



function pppp( ) {
       var person = { "name": "jack", "age": 24, "sex": true }

            Alert(person.name) >          Alert(person.sex);
이러한 코드는 직접 작성할 수 있으며 vs2010 코드 편집기에 코드 프롬프트가 있을 수도 있습니다. 매우 강력합니다.

ashx의 전체 코드는 다음과 같습니다.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

    namespace nnn
{
    ///


    /// PostIt 的摘要说明
    ///

    public class PostIt : IHttpHandler
    {

            public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/json";
            try
            {
                string msgContent = context.Request["msgContent"] ?? "";
                ModelContent m = new ModelContent()
                {
                    author = "",
                    categoryid = -1,
                    title = "",
                    content = msgContent,
                    datetime = DateTime.Now,
                    key = "",
                    createdate = DateTime.Now,
                    lastmodifydate = DateTime.Now,
                    ip = context.Request.UserHostAddress

                    };

                    //BLLContent bll = new BLLContent();
                //bll.Add(m);

                    IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();         
                //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式          
                timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
                string output = JsonConvert.SerializeObject(m, Newtonsoft.Json.Formatting.Indented, timeConverter);
                context.Response.Write(output);
            }
            catch (Exception ex)
            {
                context.Response.Write(ex.Message);
            }

            }

            public bool IsReusable
        {
            get
            {
               return false;
            }
        }
    }
}

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