目前我正在完成我的任务,希望我从两个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函数中组合。我该怎么办才能让它发挥作用?
谢谢:|
答案 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
我认为这是异步问题,但我不知道如何使它工作。 :(