0

我有两个单独的 .js 文件,我想在我的第一个 .js 文件中分配一个citId在 ajax 调用中调用的全局变量的值,然后在我的第二个 .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 文件中使用它?

4

3 回答 3

1

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

在成功调用中使用它。

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

于 2013-01-28T15:58:35.767 回答
0

执行 AJAX 调用时,Javascript 不会“保持”,它是异步的,对于第二个 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

    });
}

这样的事情会做:)

于 2013-01-27T09:52:05.863 回答
0
$('.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...
于 2014-11-16T13:50:59.843 回答