• jq调用ajax的总结


    用ajax调用后台总结心得

    先来看一个代码样例:

     $.ajax({
        url: 'http://blog2019.applinzi.com/api/blogs',
        type: 'GET',
        contentType: "application/json",
        success: function (data) {
            var html = '';
            console.log(data);
            for (i = 0; i < data.length; i++) {
                html += '<div class="panel panel-primary">' +
                    ' <div class="panel-heading">' + data[i].blogText +
                    '<div class="f-r">' + getMyDate(Number(data[i].date)) + '</div>' + '</div>' +
                    ' <div class="panel-body"  id = "details">' + '<a href = "./Details.html?id=' + data[i]._id + '" target = "_blank">' + data[i].introText + '</a>' + '</div>' +
                    '<div class="panel-footer">' + getCategoryNameById(data[i].languageId) + '</div>' + '</div>'
            }
            $('.post-wrapper').html(html);
        },
        error: function (error) {
            debugger;
            console.log(error);
        }
    });
    

    对于上面的代码,我们来看一下几个主要的参数:

    1. type 的请求方式;
    2. url请求的url;
    3. datetype的数据格式;
    4. data请求的数据;
    5. success如果请求成功的回调函数

    type的请求方式:

    type的请求分为POST和GET两种。get与post的区别有很多,但是从我自己的角度来看get和post的区别时:

    GET的目的就如同其名字一样是用于获取信息的。它旨在显示出页面上你要阅读的信息。浏览器会缓冲GET请求的执行结果,如果同样的GET请求再次发出,浏览器就会显示缓冲的结果而不是重新运行整个请求。这一流程不同于浏览器的处理过程,但是它是有意设计成这样以使GET调用更有效率。GET调用会检索要显示在页面中的数据,数据不会在服务器上被更改,因此重新请求相同数据的时候会得到相同的结果。
    
    POST方法应该用于你需要更新服务器信息的地方。如某调用要更改保存在服务器上的数据,而从两个同样的POST调用返回
    的结果或许会完全不同,因为第二个POST调用的值与第一个的值不相同,这是由于第一个调用已经更新了其中一些值。POST调用通常会从服务器上获取响应而不是保持前一个响应的缓冲。
    

    在面试中我们经常会被问到post与get的区别,我总结出以下几点:

    • get参数通过url传递,post放在request body中。

    • get请求在url中传递的参数是有长度限制的,而post没有。

    • get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。

    • get请求只能进行url编码,而post支持多种编码方式

    • get请求会浏览器主动cache,而post支持多种编码方式。

    • get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

    • GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

    • GET产生一个TCP数据包;POST产生两个TCP数据包。

    长的说:
    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

    url

    对于url来说,分为两种情况:
    一种是直接把后台的接口地址写进去就可以,一种是需要我们进行拼接。

    datatype的数据格式:

    • "xml": 返回 XML 文档,可用 jQuery 处理。
    • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
    • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
    • "json": 返回 JSON 数据 。
    • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
    • "text": 返回纯文本字符串

    ajax实现的五个步骤(面试):

    1. 创建XMLHttpRequest对象:
      var xmlHttp = new XMLHttpRequest();
    2. 注册回调函数:
    {
           if (xmlHttp.readyState == 4)
                if (xmlHttp.status == 200) {
                   var responseText = xmlHttp.responseText;
    
               }
    }
    
    1. 配置请求信息,open(),get

    //get请求下参数加在url后:.ashx?methodName = GetAllComment&str1=str1&str2=str2
    xmlHttp.open("post", "/ashx/myzhuye/Detail.ashx?methodName=GetAllComment", true);

    post请求下需要配置请求头信息:
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    1. 发送请求,post请求下,要传递的参数放这
      xmlHttp.send("methodName = GetAllComment&str1=str1&str2=str2");

    2. 根据不同的响应进行处理

    function callback1() {
        if (xmlHttp.readyState == 4)
            if (xmlHttp.status == 200) {
                //取得返回的数据
                var data = xmlHttp.responseText;
                //json字符串转为json格式
                data = eval(data);
                $.each(data,
                    function (i, v) {
                        alert(v);
                    });
            }
    }
    
  • 相关阅读:
    测试用例原理以及设计方法
    软件测试方法大汇总(转)
    黑盒测试用例大集
    博客第一篇章
    什么是Shell脚本
    部署 Django
    Django 国际化和本地化
    Django与CSRF 、AJAX
    认证系统 Authentication
    Django与缓存
  • 原文地址:https://www.cnblogs.com/wangjian2016/p/11373885.html
Copyright © 2020-2023  润新知