3

私は JS 初心者なので、明らかなことを見逃していたら申し訳ありませんが、私が行った検索では意味のあるものを取得できませんでした。

データの移動先の変数の名前として、ajax呼び出しを行う関数に渡されるパラメーターを使用しようとしています。例えば:

ajaxFun("[url loctaion].json?callback=?","main","mainData");

取得した JSON オブジェクトは「mainData」変数を使用してアクセスできるという考えですが、変数名「expData」でアクセスできるようにする必要がある取得する別のファイルがあるため、これを明示的に使用することはできません。これらはどちらもグローバル変数であり、ページの読み込み時にすでに宣言されています。

以下は動作する現在のコードですが、ajax 呼び出しの成功部分にある「if、else if、else」ブロックを抽象化したいと思います。

    function ajaxFun(urlS,jsonpCallbackS,dataSource){
    $.ajax({
            type: "GET",
            url: urlS,
            async: false,
            jsonpCallback: jsonpCallbackS,
            contentType: "application/json",
            dataType: "jsonp",
            cache: false,
            success: function(source){
            if(dataSource === "expData"){
                expData = source;
            }
            else if(dataSource === "mainData"){
                mainData = source;
            }
            else{
                console.log('data not set');
            }
            },
            error: function(classData){
                console.log('error');
            }
    });
}

eval() の使用や結果のオブジェクトへの追加など、さまざまな方法を試しました。

var dataCon = {};

function ajaxFun(urlS,jsonpCallbackS,dataSource){
    $.ajax({
            type: "GET",
            url: urlS,
            jsonpCallback: jsonpCallbackS,
            contentType: "application/json",
            dataType: "jsonp",
            cache: false,
            success: function(source){
                var name = dataSource;
                alert(name);
                dataCon.name = source;
                },
                error: function(classData){
                    console.log('error');
                }
    });
}

使用:

'ajaxFun("[url loctaion].json?callback=?","main","mainData");'

「mainData」というアラートが表示されますが、dataCon の console.log で、「source」の値が「name」というキーに設定されていることがわかります。

4

4 に答える 4

2

これを試して:

window[dataSource]

それはあなたが持っている文字列の変数の値を取得します。例えば:

dataSource = "something"
something = 5
alert(window[dataSource]) // alerts 5
于 2013-07-08T13:57:47.913 に答える
1
var someObj = {};
var keyName = "test";
someObj[keyName]

オブジェクト内のキーを参照するための角括弧。

于 2013-07-08T13:57:52.103 に答える
1

角かっこ表記を使用します。

dataCon[name]

また

dataCon[source]

オブジェクト プロパティへのアクセスについては、MDN のドキュメントを参照してください。

于 2013-07-08T13:57:33.247 に答える
0

それ以外の

dataCon.name = source;

行う

dataCon[name] = source;

Javascript オブジェクトのメンバーは、キーによって格納されます。したがって、これらは同じです:

dataCon.name
dataCon["name"]

クールなことは、キーを変数に置き換えることができることです:

dataCon.name = "hi!";
var key = "name";
dataCon[key] = "hi again!";

これは、 Mozilla Web サイトで非常にうまく説明されています。

于 2013-07-08T14:02:41.690 に答える