English 中文(简体)
将多个JSON值组合为一个变量
原标题:Combine multiple JSON values as one variable
  • 时间:2011-02-07 17:50:05
  •  标签:
  • jquery
  • json

目前,我正在完成我的任务,希望我从两个JSON结果中获得一个值。以下是我的困境:

1) 我有两个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函数中进行组合。我应该怎么做才能让它发挥作用?

谢谢:|

问题回答

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()
    });
}

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

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

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

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

编辑:删除了导致无限循环的部分答案。很抱歉,这是一个非常愚蠢的答案,我应该在发布之前好好考虑一下。尽管如此,我仍然支持上述观点。





相关问题
JQuery/MVC Search Issue

I have inherited a piece of work where the entry screen shows a summary of 20 calculated variables. E.g. Var A (250), Var B (79). Clicking on any of these links takes the user to a view with a ...

jQuery quicksearch plug-in tinkering with JSON

I ve implemented the quicksearch plugin by Rik Lomas and I love it for an application in a custom CMS I m building. I was wondering though, since I m going to have a bizillion items in the table if ...

JSON with classes?

Is there a standardized way to store classes in JSON, and then converting them back into classes again from a string? For example, I might have an array of objects of type Questions. I d like to ...

PHP json_decode question

i m trying to use json_decode to combine a few json objects and then re-encode it. my json looks like: { "core": { "segment": [ { "id": 7, "...

Converting JSON data to Java object

I want to be able to access properties from a JSON string within my Java action method. The string is available by simply saying myJsonString = object.getJson(). Below is an example of what the string ...

热门标签