1

ドキュメントの準備ができたら、スクリプト メソッドが呼び出されるこのコードを実行しています。また、デバッガーを配置してその値をアラートするとオブジェクトを取得できますが、 "Uncaught TypeError: Cannot read property 'ecommerce' of undefined"ローカルで実行中にエラーがスローされます。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
var jsonObj = {
        "input": {
            "ecommerce": 
                {
                    "id": 123,
                    "name": "isEcommerce",
                    "type": "boolean",
                    "actionType" : "radioButton",
                    "child": {"yes":["p","q","e","w"],
                                "no":["a","b","c","d"]}
                },
            "bad website": 
            {
                "id": 2324,
                "name": "isBadWebsite",
                "type": "boolean",
                "actionType" : "radioButton",
                "child": {"yes":["erw","sd","sd","sd"],
                            "no":["sd","sd","sd","fd"]}
            }
        }
};
var data = jsonObj;     
$(document).ready(function(data){
    alert("HI!!");
    alert(data);
    alert(data.input);
    alert(data.input.ecommerce);
});

function tackleEvent(obj){
    alert("Clicked " + obj);

}
</script>
</head>
<title>Hello!</title>

<body>
</body>
</html>

エラー トレース:

   Uncaught TypeError: Cannot read property 'ecommerce' of undefined ui:34
    (anonymous function) ui:34
    f.Callbacks.n jquery.min.js:2
    f.Callbacks.o.fireWith jquery.min.js:2
    e.extend.ready jquery.min.js:2
    c.addEventListener.B jquery.min.js:2

オブジェクトを取得できず、同じ入力中に機能するのはなぜですか?

4

2 に答える 2

1

前の 2 つのアラート ボックスで気付いた場合、表示される値は次のようにdataなります。

function(a,b) { return new e.fn.init(a,b,h) }

これは、次の関数内で jQuery 名前空間のエイリアスが渡されているためです (ローカル コピーは という名前dataです)。

function(data){
    alert("HI!!");
    alert(data);
    alert(data.input);
    alert(data.input.ecommerce);
}

データと名付けられました。したがって、上記の関数内では次のようになります。あなたが使用することができます:

data.ajax()
data.ready() //another
data.load()
// and all other jQuery functions.

グローバル変数にアクセスするにはdata; 使用する必要があります: window.data.

于 2013-10-05T08:54:40.173 に答える