在 ajax 调用中为全局变量赋值,并在单独的.js文件中使用它

Assigning a value to a global variable inside an ajax call and using it in a separate .js file

本文关键字:js 文件 单独 调用 ajax 全局变量 赋值      更新时间:2023-09-26

我有两个单独的.js文件,我想在我的第一个.js文件中分配一个名为citId的全局变量的值,然后在第二个.js文件中使用该变量。

代码太长,无法发布,所以我举了一个我正在尝试做的事情的例子。

我的第一个.js文件是main.js

var citId = "";
$(document).ready(function($) {
var url = some url;
$.ajax({
    type: 'GET',
    url: url,
    jsonpCallback: 'getSBJSON',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
                  //Does some stuff
                   urlId = product of some stuff;
        $.ajax({
            type: 'GET',
            url: url + urlId,
            jsonpCallback: 'getSBJSON',
            contentType: "application/json",
            dataType: 'jsonp',
            success: function(json) {
                if (json.length > 0) {
                    citId = urlId;
                    window.open('Citations.html', '_self');
                } else {
                var page = linkBase + urlId;
                window.open(page);
                }  
            },
            error: function(e) {
                console.log(e.message);
            }   
         });  
    });   
    },
    error: function(e) {
        console.log(e.message);
    }
});
});

我的第二个.js文件是citations.js

$(document).ready(function($) {
    var itemLnkId = citId;
    $.ajax({
        type: 'GET',
        url: url + citId,
        jsonpCallback: 'getSBJSON',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(json)
        // more stuff
    });
});

我已经阅读了很多答案,这些答案要么显示了如何在 ajax 调用中分配全局变量,要么显示了如何在.js文件中使用全局变量,但没有显示如何将两者结合起来。

当我简单地使用全局变量时,它适用于原始值,但不显示 ajax 调用中正在更改的值。有没有办法既分配一个值,又在不同的.js文件中使用它?

为什么不使用全局变量,使用 ajax 调用的 invokedata 传递所需的变量?

以在成功调用中使用它。

示例 http://weboutofthebox.com/en-GB/28/Article/Ajaxinvokedataparameter

Javascript 在执行 AJAX 调用时不会"保持",它是异步的,对于第二个 ajax 调用,变量尚未设置。 所以...试试这个:

引用文献.js:

$(document).ready(function($) {
var url = some url;
$.ajax({
    type: 'GET',
    url: url,
    jsonpCallback: 'getSBJSON',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
                  //Does some stuff
                   urlId = product of some stuff;
        $.ajax({
            type: 'GET',
            url: url + urlId,
            jsonpCallback: 'getSBJSON',
            contentType: "application/json",
            dataType: 'jsonp',
            success: function(json) {
                if (json.length > 0) {
                    readyToGo(citId);
                    window.open('Citations.html', '_self');
                } else {
                var page = linkBase + urlId;
                window.open(page);
                }  
            },
            error: function(e) {
                console.log(e.message);
            }   
         });  
    });   
    },
    error: function(e) {
        console.log(e.message);
    }
});
});

主.js:

var readyToGo = function() {
    var itemLnkId = arguments[0];
    $.ajax({
        type: 'GET',
        url: url + citId,
        jsonpCallback: 'getSBJSON',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(json)
        // more stuff
    });
}

这样的事情会:)

$('.actived').click(function(){         
            var status = "Actived";
            var register_id=1;
            (function(status){              
                $.ajax({                
                    //url: "<?php echo base_url();?>index.php?admin/home/toggleActive",
                    type: "POST",
                    data: {                     
                        "register_id" : register_id,
                        "status":status
                    },
                    //datatype: 'json',
                    success: function(data){
                    },
                    error:function(){
                        alert("failure");
                    }
                });         
            })(status);
        });

I hope that it will help you...