zoukankan      html  css  js  c++  java
  • 原生js实现ajax与jquery的ajax库,及json

    这是一篇笔记博客,

    Ajax:

    和服务器进行数据交换(异步)

    js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的

    同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议,端口下

     在ajax中常用的一些函数:

    openmethodurlasync)第三个参数的默认值为true,一般不填写:
    sendstring):将请求发送到服务器端,post请求填写参数
    request.open(“get”,”get.php”,true);request.send()
    request.open(“post”,”post.php”,true); request.send()
    request.open(“post”,”create.php”,true);
    request.setRequestHeader(“Contend-type”,”application/x-www=form-urlencoded”);
    request.send(“name=王二狗&sex=”)
    responseText:获得字符串形式的响应数据
    responseXML:获得XML形式的响应数据(比较少)
    status和statusText:以数字和文本形式返回HTTP状态码
    getAllResponseHeader():获取所有响应暴投
    getResponseHeader():查询响应中的某个字段的值
     
    readystate属性:
    0:请求未初始化,open还没有调用
    1:服务器连接已建立,open已经调用了
    2:请求已接受,也就是接收到了头信息
    3:请求处理中,也就是接收到响应主体了
    4:请求已完成,且响应已就绪,就是响应完成了
     
    xmlhttprequest取得响应:
    var reques=new XMLHttpRequest();
    request.open("GET","get.php",true);
    request.send():
    request.onreadystatechange=function(){
    if(request.readystate==4&&request.status==200){
    //成功之后的函数
    }
    原生js的ajax,get方法:
    var request=new XMLHttpRequest();
        request.open('GET','service.php?number='+document.getElementById('keyWord').value);
        request.send();
        request.onreadystatechange=function(){
            if(request.readyState==4&&request.status==200){
                document.getElementById('searchResult').innerHTML;
            }else{
                alert('error!'+request.status);
            }
        }
    
    ajax的post方法:
     var request=new XMLHttpRequest();
        request.open('POST','service.php');
        var data='name='+document.getElementById('staffName').value
        +"&number="+document.getElementById('staffNumber').value
        +"&sex="+document.getElementById('staffSex').value
        +"&job="+document.getElementById('staffJob').value;
        request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        request.send(data);
        request.onreadystatechange=function(){
            if(request.readyState==4&&request.status==200){
                document.getElementById('createResult').innerHTML;
            }else{
                alert('error!'+request.status);
            }
        }
        }

    上述是不含json的ajax,现在实际操作中基本都是使用json,故什么是json

    Json:javascript对象表示法

    Json是存储和交换文本信息的语法,类似XML长度短小,读写速度更快),采用键值对的方式来组织,易于人们阅读和编写,同时也易于机器解析和生成

    Json是独立于语言的,不管什么语言都可以解析json只需要按照json的规则来

    Json可以使用javascript内建的方法直接解析,转换成javascript对象,

    Json数据的书写格式是:名称/值对

    名称值对组合中的名称写在前面(双引号中),对写在后面(同样在双引号中),中间用冒号隔开,例如“name”“rose”

    json的值可以是下面这些类型:

    数字整数或者浮点数)

    字符串双引号中)

    逻辑值(true false

    数组方括号中)

    对象在花括号中)

    null

    例如

    JSON对象:

    JSON对象和Js对象中有两个不同:1.没有声明变量 2.没有末尾的分号,对象的属性必须加双引号

    例如:

    {
    "name":"jeo",
    "age":18,
    "school":{
    "name":"cq",
    "location":"cq"}}

    JSON数组:采用数组字面量形式:没有变量和分号

    [24,'h1',true]

    讲数组和对象结合起来:

    [
    {
    "title":"JS",
    "authors":[
    "NICO"],
    edition:3,
    year:2009},
    {
    "title":"CSS",
    "authors":["JACK"],
    edition:2,
    year:2009}]
    get方法
    var request= new XMLHttpRequest();
    request.open("GET","service.php?number="+document.getElementById("keyword").value);
    request.send();
    request.onreadystatechange=function(){
        if(request.readyState==4&&request.status==200){
            var data=JSON.parse(request.responseText);
            if(data.success){
                document.getElementById('searchResult').innerHTML=data.msg;//服务器端的字段
            }
            else{
                document.getElementById('searchResult').innerHTML="出现错误:"+data.msg;
            } }
                else{
                    alert('error:'+request.status)
                }
       
    }
    post方法
      var request=new XMLHttpRequest;
        request.open("POST","service.php");
       var data='name:'+document.getElementById('staffName').value+
       '&number:'+document.getElementById('staffNumber').value+
       '&sex'+document.getElementById('staffSex').value+
        '&job'+document.getElementById('staffJob').value;
        request.setRequestHeader('content-Type','application/x-www-form-urlencoded');
        request.send(data);
        request.onreadystatechange=function(){
    if(request.readyState==4&&request.status==200){
        var data=JSON.parse(request.responseText);
        if(data.success){
            document.getElementById('createResult').innerHTML=data.msg;
        }
        else{
            document.getElementById('createResult').innerHTML="error:"+data.msg;
        }
    } else{
                    alert('error:'+request.status)
                }
        }
  • 相关阅读:
    C# 打开Word文档错误
    (转)ArcObjects SDK(AE)10.1在vs2012安装的方法
    arcgis 10.3 属性表乱码解决方案
    克里格插值结果覆盖指定范围
    MySQL查询不到中文的问题
    集电极开路,漏极开路,推挽,上拉电阻,弱上拉,三态门,准双向口【转】
    老牌激活工具– Microsoft Toolkit 2.4.3 + 详细图文教程【转】
    老牌激活工具 — Microsoft Toolkit 2.5.1正式版【转】
    SoftDevice Specification v1.2
    nRF51822 之 Interrupt
  • 原文地址:https://www.cnblogs.com/yuan233/p/10295314.html
Copyright © 2011-2022 走看看