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

我现在有个系统在用户点击浏览时,系统会以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;//返回值
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值