2011-02-07 80 views
0

目前我正在处理我的任务,该任务要求我从两个JSON结果中获取值。这里是我坚持:将多个JSON值合并为一个变量

1)我有2个JSON网址,这都返回不同的值:

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函数中合并。我应该怎么做才能使它工作?

感谢:

+0

我们可以看看格式url1.js和url2.js返回吗? – BiAiB 2011-02-07 17:55:42

+0

另外,您的MATH函数是否会找到商? – 2011-02-07 17:59:01

回答

0

问题可能是您正在使用两个getJSON调用是异步调用。这意味着虽然getJson运行调用函数完成了它需要做的事情,并且程序不需要等待getJSON的运行结果。因此,当您运行MATH函数时,没有保证都可以获得JSON调用已完成。不知道如何调用AA和BB函数,我会建议如果可能,嵌套两个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); } 

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

+0

Javascript不是多线程语言,因此此循环将运行一次或无限。 – BiAiB 2011-02-07 18:06:32

0

ajax调用,因为它们的名称状态是异步的。所以首先你需要“同步”它们来执行数学运算,也就是说,在你做数学计算之前,你必须等待它们都已经加载。

为此,请在回调函数中添加一些对检查函数的调用,该函数将检查两个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() 
    }); 
} 
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

我相信是异步的问题的问题,但香港专业教育学院有不知道如何使它工作。 :(