将多个JSON值组合为一个变量

时间:2011-02-07 17:50:05

标签: jquery json

目前我正在完成我的任务,希望我从两个JSON结果中获取值。这是我被困的地方:

1)我有2个JSON URL,它们都返回不同的值:

    function AA(){
        $.getJSON("url1.js", function(VALUEA){
        VALUEA.json;
        });
    }
    function BB(){
        $.getJSON("url2.js", function (VALUEB){
        VALUEB.json;
        });
    }

2)然后,我需要结合两个结果并在jQuery中做一些数学运算:

function MATH() { 
RESULT = VALUEB.json / VALUEA.json;
alert(RESULT); }

我可以解析两个JSON结果但是它无法在MATH函数中组合。我该怎么办才能让它发挥作用?

谢谢:|

3 个答案:

答案 0 :(得分:0)

问题可能是您正在使用两个异步调用的getJSON调用。这意味着当getJson运行时,调用函数完成了它需要做的事情,并且程序不需要等待getJSON的结果运行。所以当你运行MATH函数时,没有任何一个getJSON调用的保证。已经完成了。在不知道如何调用AA和BB函数的情况下,我建议尽可能嵌套两个get JSON调用和MATH函数调用以获得正确的答案。

function AA(){
    $.getJSON("url1.js", function(VALUEA){
       BB();
    });
}
function BB(){
    $.getJSON("url2.js", function (VALUEB){
    MATH();
    });
}
function MATH() { 
    RESULT = int(VALUEB.json.yourVar) / int(VALUEA.json.yourVar);
    alert(RESULT); }

编辑:删除了导致无限循环的部分答案。对不起,这是一个真正的脑死亡答案,我应该在发布前考虑更好。我仍然坚持上述观点。

答案 1 :(得分:0)

ajax调用,因为它们的名称状态,是异步的。所以首先你需要“同步”它们来执行数学运算,即你必须等到它们都已经加载才能进行数学运算。

为此,请在回调函数中调用一个checker函数,该函数将检查两个ajax调用是否结束,如果是,则执行数学运算。

以下是如何操作:

var valueA, valueB;

function checkIfEverythinIsFine() {
    if ( (valueA || valueA === 0) && (valueB || valueB === 0) )
        Math();
}

function AA(){
    $.getJSON("url1.js", function(VALUEA){
        valueA = VALUEA.json;
        checkIfEverythinIsFine()
    });
}
function BB(){
    $.getJSON("url2.js", function (VALUEB){
        valueB =VALUEB.json;
        checkIfEverythinIsFine()
    });
}

答案 2 :(得分:0)

很抱歉迟到的回复。好的,这是我的实际代码。

function totalcss(){
$.getJSON("http://otter.topsy.com/searchcount.js?q=css&callback=?", function (valuecss){
var css = valuecss.response.a;
}); }

第二个值是

function totaljquery(){
$.getJSON("http://otter.topsy.com/searchcount.js?q=jquery&callback=?", function (valuejquery){
var css = valuejquery.response.a;
}); }   

然后我的数学就是获得两者的百分比,

  

var totalsearch =(valuecss +   valuejqeury);

     

var css_percentage = valuecss /   totalsearch * 100

     

var jquery_percentage = valuejquery /   totalsearch * 100

我认为这是异步问题,但我不知道如何使它工作。 :(