2

Jquery の get 関数を使用すると、データがサーバーに送信される実装済みのコード スニペットが見つかりました。データはディクショナリとして get 関数に渡されます。このディクショナリでは、キーは文字列として機能しますが、引用符で囲まれていません。このディクショナリの値は、文字列としてラップされます。誰が違いを説明できますか?変数名と時間は、スクリプトの以前のどこにも定義されていません。以下のスクリプト全体が含まれています。

<script>
    $(document).ready(function () {
        $.ajaxSetup({ cache: false });
        $('button').click(function () {
            $.get('query.php',{ name: "John", time: "2pm" },function (data) {
                alert(data);
            });
        });
    });
</script>
4

2 に答える 2

3

あなたが求めているコードは、JavaScript オブジェクト リテラルです。

{
    name: "John",
    time: "2pm"
}

このようにオブジェクト リテラルを記述でき、まったく同じことを意味します。

{
    "name": "John",
    "time": "2pm"
}

前の行に別のオブジェクト リテラルがあります。

$.ajaxSetup({ cache: false });

それは、次のように書かれているのと同じことを意味します。

$.ajaxSetup({ "cache": false });

また:

$.ajaxSetup({ 'cache': false });

別の言い方をすれば、オブジェクト リテラル内のプロパティ名には通常、引用符は必要ありません。名前が有効な JavaScript 識別子ではない場合、たとえばプロパティ名にスペースが含まれている場合にのみ、プロパティ名を引用する必要があります。

{
    "my name": "John",
    "the time": "2pm"
}

このように書いた場合、それは無効になります。

{
    my name: "John",
    the time: "2pm"
}

したがって、ここでは引用符が必要です。しかし、あなたが使用したオブジェクトリテラルでは、それらは必須ではなく、使用しても使用しなくても同じことを意味します。

これは、ハッシュまたはマップ内の引用された名前または引用されていない名前が実際には異なることを意味する他の言語とは異なることに注意してください。Ruby では、ハッシュ内の引用符で囲まれていない名前は変数参照です。JSON では、プロパティ名は常に引用符で囲む必要があります。ただし、JavaScript オブジェクト リテラルでは、名前が有効な JavaScript 識別子である場合、引用符を省略できます。

于 2013-09-18T23:17:34.483 に答える