2012-03-26 12 views
0

これが重複しているとか、それを閉じることになる前に、記事全体を読んでください。私はここで検索しました。私がしようとしていることは、このサイトに掲載されているものとは異なります。違いは、JSON呼び出しの値を関数(いくつかの同様の関数の1つ)に代入しようとしているため、合計の数値を返すことができます。Jquery:JSON値を関数呼び出しに割り当てる方法

だから私はこのようなJSON呼び出しを持っている場合:

var count; 
function getMainContactCount { 
    $.getJSON(url, function(data) { 
     count = data; 
     c= getCount(count); 
     return c; 
    }); 
} 

function getCount(count) { 
    return count; 
} 

私の第二の機能は、リターンがないアラート数を数えると言うことに注意してください。アラートはすぐに起こり、明らかにリターンは起こらないので、これは正常に動作します。私の文書で次に

(上記のスクリプトは、添付のスクリプトファイル内にある)準備ができて、私はこれを行う:

c= getMainContactCount(); 
count = getCount(c); 

は、これは明らかに仕事に行くのではありませんが、これは私が必要なものの本質でありますする。私は自分の文書の中で、データベースからすべてのカウントを返し、それらを一緒に追加できるように準備しておく必要があります。約10のテーブルがあるので、すべての値をドキュメントに戻してから追加する方が簡単だったようです。しかし、これは正しいアプローチではないかもしれません。私がしたくないことは値を警告することです。それは値を追加するのに役立たないからです。

+0

何をしようとしていますか?あなたはAJAX呼び出しから戻ることはできません、彼らは非同期です。 –

+0

さて、私の価値観はどうですか?繰り返しますが、私はそれに気づきたくありません。 – sehummel

+0

上記はいくつかの例を示していますが、警告する以外の方法を見つける必要があります。 – sehummel

答えて

1

あなたが値を取得したい場合は、スクリプトの実行を分割、後でそれを使用し、私はあなたがこのような何かを探していると思う:

var count; 
function getMainContactCount { 
    $.getJSON(url, function(data) { 
     count += data.length; 
     // Whatever you you need to do with count, do it here. 
     // Like this: 
     alert(count) // just checking if we have the right value 
        // couldn't resist adding an alert :) 
    }); 
} 

EDIT

同じコールバックを再利用するには、getJSONコールの外に定義します。

// Define a global count var 
var count; 
// Define a single callback to reuse 
var addCount = function(data) { 
    count += data.length; 
    alert(count); // just a test, remove the alert later 
} 
// Do several ajax calls to the json 
$.getJSON('/some_url', addCount); 
$.getJSON('/some_other_url', addCount); 
$.getJSON('/yet_another_url', addCount); 
+0

ここでも、私はそれぞれ独自のJSON呼び出しを持つ複数の同様の関数を持つことができる必要があります。複数のJSON呼び出しを持つ必要がある場合、JSON呼び出しの中でカウントすることは、私に何の効果もありません。 – sehummel

+0

これは私が探していたものです。ありがとう、bfavaretto! – sehummel

0

まずオフ、getJSONは非同期です。したがってgetMainContactCountは実際には何も返しません。

第2に、count = getCount(c)count = cに相当します。

ここで何をしようとしていますか?負荷

var myPageLoadingScripts = function(count){ 
    //You can use count here. 
    ... 
} 

$(function(){ 
    $.getJSON(url, myPageLoadingScripts); 
}); 
+0

スクリプトの本体にある変数にカウントを割り当てる必要があります。 – sehummel

+0

カウントは2番目の関数で計算されますか? – sehummel

関連する問題