2011-02-07 61 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

我相信是異步的問題的問題,但香港專業教育學院有不知道如何使它工作。 :(