• Python之路:Jquery Ajax的使用


    Ajax概述

      Ajax就是通过 HTTP 请求加载远程数据。通常用于定制一些http请求来灵活的完成前端与后端的数据交互需求。

      注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。

      JQuery Ajax之所以能发送http请求, 是调用了html中的XMLHttpRequest对象(原生ajax)。

      另外还有一种跨域Ajax。这个会在最后介绍到 。

    Ajax的一般格式

    1
    2
    3
    4
    5
    6
    7
    $.ajax({
         type: 'POST',
         url: url ,
        data: data ,
        success: success ,
        dataType: dataType
    });

    Ajax的参数说明

    参数名 类型 描述
    url String (默认: 当前页地址) 发送请求的地址。
    type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
    timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。
    async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
    beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。
    function (XMLHttpRequest) {  this; // the options for this ajax request}
    cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
    complete Function 请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。
    function (XMLHttpRequest, textStatus) {  this; // the options for this ajax request}
    contentType String (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
    data Object,
    String
    发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
    dataType String

    预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

    "xml": 返回 XML 文档,可用 jQuery 处理。

    "html": 返回纯文本 HTML 信息;包含 script 元素。

    "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。

    "json": 返回 JSON 数据 。

    "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

    error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。
    function (XMLHttpRequest, textStatus, errorThrown) {  // 通常情况下textStatus和errorThown只有其中一个有值   this; // the options for this ajax request}
    global Boolean (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
    ifModified Boolean (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
    processData Boolean (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
    success Function 请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态
    function (data, textStatus) {  // data could be xmlDoc, jsonObj, html, text, etc...  this; // the options for this ajax request}

    Ajax的一些例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    //1.$.ajax带json数据的异步请求
    var aj = $.ajax( { 
        url:'productManager_reverseUpdate',// 跳转到 action 
        data:{ 
                 selRollBack : selRollBack, 
                 selOperatorsCode : selOperatorsCode, 
                 PROVINCECODE : PROVINCECODE, 
                 pass2 : pass2 
        }, 
        type:'post', 
        cache:false, 
        dataType:'json', 
        success:function(data) { 
            if(data.msg =="true" ){ 
                // view("修改成功!"); 
                alert("修改成功!"); 
                window.location.reload(); 
            }else{ 
                view(data.msg); 
            
         }, 
         error : function() { 
              // view("异常!"); 
              alert("异常!"); 
         
    });
     
     
    //2.$.ajax序列化表格内容为字符串的异步请求
    function noTips(){ 
        var formParam = $("#form1").serialize();//序列化表格内容为字符串 
        $.ajax({ 
            type:'post',     
            url:'Notice_noTipsNotice', 
            data:formParam, 
            cache:false, 
            dataType:'json', 
            success:function(data){ 
            
        }); 
     
     
    //3.$.ajax拼接url的异步请求
    var yz=$.ajax({ 
         type:'post', 
         url:'validatePwd2_checkPwd2?password2='+password2, 
         data:{}, 
         cache:false, 
         dataType:'json', 
         success:function(data){ 
              if( data.msg =="false" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间 
              
                   textPassword2.html("<font color='red'>业务密码不正确!</font>"); 
                   $("#validatePassword2").val("pwd2Error"); 
                   checkPassword2 = false; 
                   return; 
               
          }, 
          error:function(){} 
    });
     
     
    //4.$.ajax拼接data的异步请求
    $.ajax({  
        url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',  
        type:'post',  
        data:'merName='+values,  
        async : false, //默认为true 异步  
        error:function(){  
           alert('error');  
        },  
        success:function(data){  
           $("#"+divs).html(data);  
        }
    });

    Ajax需要注意的一些地方

      1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断。

      2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit

    Ajax跨域请求

      默认情况下,ajax只能给自己的域名发送ajax请求。

      跨域请求是指通过ajax去访问非本网站域名,与其他网站进行数据交互。这种请求受到浏览器“同源策略”的限制,会被浏览器本身拦截(在收到回应数据的时候被浏览器拦截,实际请求已经发送出去)。

    解决跨域的两种方式

      jsonp 和 跨域资源共享就是解决ajax跨域请求的两种方式。具体案例,可以查看链接:Ajax大保健全套

  • 相关阅读:
    2017微软秋招A题
    UVA 494 Kindergarten Counting Game
    loss function与cost function
    coderforces 721b
    coderforces719b
    PyQt4打包exe文件
    PyQt4 UI设计和调用 使用eric6
    PyQt4 进度条和日历 代码
    PyQt4 颜色选择,字体选择代码
    PyQt4调用UI文件
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/6636416.html
Copyright © 2020-2023  润新知