我现在有个系统在用户点击浏览时,系统会以ajax的方式从后台获取查看的链接,并以window.open的方式打开,但因为现在多数的浏览器都会拦截window.open打开的地址,而window.location.href的方式又无法在浏览器新窗口打开,所以我现在只能通过在前台页面的onclick函数中实现window.open(使用该方式,浏览器不会拦截),我原来的代码是如下这样的:

function GetViewUrl(bookID, $, layer, siteURL) {$.ajax({type: "post",data: { 'BookID': bookID },datatype: "text/json",scriptCharset: 'utf-8',url: siteURL   'Parts/GetViewUrl',success: function (year) {if ($.trim(year) != '') {var defalutFileName = bookID   '.html';url = siteURL   'Parts/ViewItem/'   year   '/'   bookID   '/'   defalutFileName;window.open(url);}},error: function () {}});}

我现在想修改该段代码,让这个函数返回url,可以给外部的函数调用,这段代码要怎么改?其实很简单:只要修改三个地方:

1.在该段代码新增一个全局返回的变量

2.把该段ajax调用的方式改为非异步,也就是新增一个 async: false,

3.在最后返回定义的全局变量

代码如下:

function GetViewUrl(bookID, $, layer, siteURL) {
    var url = '';//定义要返回给外部函数的值
    $.ajax({
        async: false,//这一步非常重要
        type: "post",
        data: { 'BookID': bookID },
        datatype: "text/json",
        scriptCharset: 'utf-8',
        url: siteURL 'Parts/GetViewUrl',
        success: function (year) {
            if ($.trim(year) != '') {
                var defalutFileName = bookID '.html';
                url = siteURL 'Parts/ViewItem/' year '/' bookID '/' defalutFileName;//从服务器获取值
            }
           
        },
        error: function () {
          
        }
    });
    return url;//返回值
}

js如何把ajax获取的值返回到上层函数里?相关推荐

  1. Chart.js使用及ajax获取数据

    图表插件Chart.js使用 插件简介 安装 插件简介 chart.js是一个优秀的开源图表处理插件,内置条形,折现,雷达,时间刻度等等图表渲染. 安装 chart.js官网. 我这里使用2019年3 ...

  2. c语言 方程改main的值_c语言main函数里的参数argv和argc解析

    前言 一般我们平时写main函数的话,一般都是写不带参数的比较多,而且也习惯了这样写:其实标准的形式写法,main函数是带两个参数的,这两个参数分别是:argc和argv,那么这两个参数是表示什么意思 ...

  3. ajax获取session值_java程序员你真的了解session与cookie吗?

    1.基础: session信息是保存在服务器端,而cookie是保存在客户端(浏览器),这个是最基础的概念,如果你这一点都不知道,再去查查资料再往下读. 具体的js.java相关的session与co ...

  4. 如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。...

    开讲前,先说下网上,大部分的关于这方面的博文或者其他什么的,就我自己的感觉,第一说得不详细,第二语言不能很好的被初学者了解. 我这篇博文的标题之所以用了三句,是为了方便其他人好查找: 这里介绍的方法有 ...

  5. ajax获取session值_cookie和session基础知识学习

    一.session的简单使用 session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象. session的使用步骤: 获取session对象 使用sessi ...

  6. ajax获取session值_【JavaWeb】91:Cookie与Session

    今天是刘小爱自学Java的第91天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 学cookie之前,我先说一个问题: 如果我设置浏览器不保存cookie. 会发现很多网站都没法登录了. 购物 ...

  7. ajax值传递给其他函数,jquery中ajax返回值无法传递到上层函数

    function通过ajax调用获取后台数据,结果返回出来的结果均为空,代码如下: function chart_coinbase_getdata() { var test = {postdata:& ...

  8. ajax成功进入success但是获取不到返回值

    一.前言 最近做前端的时候,发现个奇怪的问题,ajax获取不到返回值了,问题是还是会到success中,也是可以正常打印的,就是没有response,奇怪. 二.正文 1.首先是不走success的问 ...

  9. Ajax怎么获取data为集合的值,vue,ajax获取本地的json文件,赋值后,computed和mounted里访问不到重新赋值后的listDatas...

    ajax获取本地的json文件,取到数据之后赋值给data的listDatas,view页面更新了,但是computed和mounted里访问不到重新赋值后的listDatas,除了在$get()里能 ...

最新文章

  1. 李彦宏的百度 AI 落地战略,由王海峰来实现
  2. 2019Java常见面试下
  3. memcache缓存服务器(nginx php memcache mysql)
  4. unity自发光透明shader
  5. 《剑指offer》左旋转字符串
  6. dataframe输出某列的数据以及统计某列的取值种数+输出某行数据
  7. Oracle入门(十四D)之常规函数
  8. 【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)
  9. 动态分区分配的“首次适应算法_动态图划分复制算法:Leopard
  10. android excel布局,Android实现仿excel数据表格效果
  11. ABAP和Java单例模式的攻防
  12. git与github学习笔记
  13. 面试问题(工作动机、个人愿望 )
  14. 林正隆(coolfire)
  15. visual studio code输入感叹号没有提示
  16. C++ trivial和non-trivial构造函数及POD类型
  17. 关于canvas的学习心得(三)(计算错误)
  18. [YNOI2017]由乃的商场之旅 莫队
  19. 苹果开发者账号注册第一步,Apple ID 的双重认证,为 Apple ID 设置双重认证
  20. dcs常用的冗余方式_DCS的冗余

热门文章

  1. 使用java自带的日志管理_java日志管理
  2. 查询阜阳2021高考成绩,2021年阜阳高考成绩排名及成绩公布时间什么时候出来
  3. 路由器上的usb接口有什么用_路由器的USB接口,非常强大的功能,教您轻轻松松玩转,太实用了...
  4. 计算机c盘哪些东西可以清理,细说电脑c盘哪些文件可以删除
  5. java 运行 .jar 文件乱码
  6. RxSwift 系列(一)
  7. JavaWeb(十七)——JSP中的九个内置对象
  8. mongodb查询内嵌文档
  9. JS的对象及其属性和方法
  10. 明天一定要记得放一个硬币在口袋