2012-05-11 16 views
0

これは本当に簡単な質問ですので、楽しんではいけません。私にJSONオブジェクトを提供するWebサービスのURLが与えられています。私はちょうどたくさんのAF JavaScriptの書面を取得するように見えるjQuery Ajaxを使用してJSONオブジェクトを返す

var myObj = $.getJSON("https://www.myurl/"); 

しかしこのISNの#tは私がにconsole.log(myObj.toSourceを())を使用するときのように働いて...例えば、jQueryのgetJSONメソッドを使用したいです私のオブジェクトではなく、コンソールに。

var thisJsonObj; 

$.getJSON("https://www.myurl/", function(result){ 
    thisJsonObj = result; 

}); 

console.log(thisJsonObj.toSource()); 

これは動作しません。どちらか...私が間違っているつもりです:私はこのような何かを行う必要があり、私はこの方法でコールバックを追加することができます知っていますか? URLは正常に動作しています。

+1

クロスドメインコールの場合は、jsonの代わりにjsonpを試してください。サーバーサイドコードに「コールバック」を追加することを忘れないでください。 Jqueryはjsonとのクロスドメイン・コールを行うことはありませんが、この制限を回避するために独自のAjax関数を作成することはできます。 – Tom

+0

httpリクエストが開始された直後にconsole.logの呼び出しが実行されますが、http要求が完了するまでコールバックが呼び出されないため、thisJsonObjはconsole.logが呼び出されるまでには設定されません。 console.log呼び出しをコールバックに移動すると、正しい結果が表示されるはずです – jjwchoy

答えて

2

は、Ajaxは非同期に動作しますので、あなたは、コールバック関数内でJSONオブジェクトで作業する必要があります:あなたは、外部のWebサービスを使用する場合

var thisJsonObj; 
$.getJSON("https://www.myurl/", function(result) { 
    thisJsonObj = result; 
    console.log(thisJsonObj); 
}); 

また、あなたがconsider要求がJSONPとして扱われるべき必要があること。だからあなたのURLが "callback =?"のようなものかどうかを確認してください。

0

URLはWebサービスのURLであるかもしれませんが、Webサービス内で関数を呼び出すとしますか?あなたが(例えば私の例ではFlaskなど)Pythonのマイクロフレームを持っていたと私はコンボボックスに表示する項目のリストを取得したい場合たとえば、私のpythonは少しのように見えるかもしれません:

@app.route('/_gest_list.json') 
def get_list(): 
    #return list of jsonified items 

どの私は、Webサービス/サーバのURLにマップされ、また、あなたがしている場合/get_list.json

の別名を持っていている機能get_list()を呼んでいるかのようにそれの

$.getJSON("/get_list.json", {}, function(data) { 
    //Do something 
}); 

だと思うようなあなたのjQueryで呼ばれていますaccにASP.Netを使って作業するデータには、(変数名).dのようなものを書く必要があります。 ASP.NetのすべてのJSONデータがd!にラップされます。

関連する問題