反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

AJAX

  • 文档创建者:lu123
  • 历史版本:16
  • 最近更新:RosieY 于 2022-02-16
  • ajax 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分。FR.ajax 是封装过的 jQuery.ajax() 函数,在报表中对特定网页进行 ajax 请求, data 参数做了中日韩文编码处理。

    参数说明

    options 是 ajax 参数,如下表说明:

    参数类型说明
    optionsObject必填,ajax参数

    [options]以 json 格式提供,属性如下表所示:

    属性类型说明
    urlString必填,发送请求的地址
    dataObject发送到服务器的数据。GET 请求中将自动转换为请求字符串格式,附加在 URL 后。

    值必须是 Key/Value 格式,可以是字符串如 p1=pavalue&p2=p2value,或者是对象如 {p1:p1value,p2:p2value}

    typeString请求方式 POST/GET ,默认为 GET
    dataTypeString

    预期服务器返回的数据类型。如果不指定,将自动根据 HTTP 包 MIME 信息来智能判断。可用值有:

    注:移动端不支持 "xml"、"html"、"script"

    "xml":返回 XML 文档 
    "html":返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
    "script":返回纯文本 JavaScript代码。
    "json":返回 JSON 数据。
    "text":返回纯文本字符串。
    "jsonp" : 跨域采用 jsonp 方式

    successFunction

    请求成功后的回调函数,格式如:

    success: function(data, textStatus){  
     // data 为服务器返回的,并根据 dataType 参数进行处理后的数据。
    //textStatus 为状态值 success
    }

    如下示例:

    FR.ajax({
    url: "/webapps/webroot/a.html",
    success: function(data, textStatus) {
    alert(this.url);
    }
    });
    errorFunction

    请求失败时调用此函数,格式如:

    error: function(XMLHttpRequest, textStatus, errorThrown){ 
    //参数分别为 XMLHttpRequest 对象、错误信息、捕获的异常对象。
    //通常 textStatus 和errorThrown 之中只有一个会包含信息
     }

    如下示例:

    FR.ajax({
    url: "some.jsp",
    error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert(this.url);
    }
    });
    completeFunction请求完成后回调函数(请求成功或失败之后均调用),function 中可以通过 this.xxx 来调用该 ajax 请求中的选项值。
    complete: function(XMLHttpRequest, textStatus){  
    //参数分别为 XMLHttpRequest 对象和一个描述成功请求是否成功的字符串
     }

    如下示例:

    FR.ajax({
    url: "some.jsp",
    complete: function(XMLHttpRequest, textStatus) {
    alert(this.url);
    }
    });
    timeoutNumber设置请求超时时间(毫秒),此设置将覆盖全局设置。
    async Boolean

    默认为 true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。

    注:同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行 

    示例

    在 cpt 的单元格超链 JavaScript 脚本中发 ajax 请求,且在不同的回调函数中处理不同的情况:

    var username = "1";
    var password = "1";
    FR.ajax({   
       url:"http://env.finedevelop.com:59204/Test
    /ReportServer?op=fs_load&cmd=sso",
       data:{
            fr_username:username,
            fr_password:password
       },
       dataType:"jsonp",//跨域采用jsonp方式     
       timeout:5000,//超时时间(单位:毫秒)
       //success:function(data) { //data参数视返回值情况而定
            //FR.Msg.alert("success",data.status);
       //},   
       //error:function(errorThrown){   
            //FR.Msg.alert("error",errorThrown);
       //},
       complete: function(res,textStatus){ 
            FR.Msg.alert("complete",textStatus); 
       }  
    })

    应用示例

    某些应用场景下,如果只允许在登录状态下执行一些操作,不登录就不能执行,要先判断当前的登录状态。如下图所示:

    2022-02-16_10-20-32.gif

    就可以通过 FR.ajax 在不刷新页面的情况下,请求登录状态并返回,如下实现方式。

    1)新建模板,添加一个按钮,按钮名称修改为「查看登录状态」。如下图所示:

    2)点击按钮,为按钮添加一个「点击」事件,事件内容为在不刷新页面的情况下,请求登录状态并返回。如下图所示:

    JavaScript 代码如下:

    FR.ajax({
    url: "/webroot/decision/login/info",
    async: false,
    complete: function (res, status) {
    if (status == 'success') {
    var u = FR.jsonDecode(res.responseText);
    if (u != null && u.data) {
    FR.Msg.alert("通知","登录状态");
    //u.data.ip u.data.time u.data.city 分别可返回上次登录ip、时间、城市
    }else{
    FR.Msg.alert("通知","登出状态");
    }
    }
    }});

    3)保存模板,点击「分页预览」,效果如应用场景中所示。

    点击可下载模板:实时获取登录状态.cpt

    附件列表


    主题: 二次开发
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526