1

Ok。これを行うためのさまざまな方法を約 1 時間考えた後、私の初心者が優勢になりました (この質問がそれを証明します)。

次のような JSON オブジェクトがあります。

{
    newEvent: {
        Event: {
            name: "Something",
            timestamp: {
                month: "07",
                day: "27",
                year: "2013",
                hour: "07",
                min: "42",
                meridian: "pm"
            },
            duration: "2",
            durationMeasure: "min"
        }
    },
    msg: "Event Added"
}

jquery ajaxの完全なコールバック関数で返されるため、data. Chromeを
使用するconsole.log() datadata.newEvent、、、、、および. 未定義以外のものを返す唯一のものは(上記のものを出力します)data.msgdata['newEvent']data['msg']data

私の質問: どうやって世界で何かにたどり着くことができdataますか?! JavaScript初心者のための洞察は大歓迎です! =)

編集: コード スニペット:

function eventAdditionalFinish(data,textStatus) {
    console.log("data: ",data,"\n");
    console.log("data['newEvent']: ",data['newEvent'],"\n");
    console.log("data['msg']: ",data['msg'],"\n");

    console.log("data.newEvent: ",data.newEvent,"\n");
    console.log("data.msg: ",data.msg,"\n");
}

Chrome のコンソールからの出力:

data:  {"newEvent":{"Event":{"name":"Something","timestamp":{"month":"07","day":"27","year":"2013","hour":"07","min":"42","meridian":"pm"},"duration":"2","durationMeasure":"min"}},"msg":"Event Added"}
data['newEvent']:  undefined 
data['msg']:  undefined 
data.newEvent:  undefined 
data.msg:  undefined 
4

3 に答える 3

1

サーバーから文字列を受信したためだと思います。したがって、2つのオプション:

  • dataType: 'json'ajax パラメータで指定します。
  • またはJSON.parse(data)、要素にアクセスしようとする前に使用します
于 2013-07-28T00:21:40.893 に答える
1

Ok、

の代わりにjQuery のjson()関数を使用ajax()すると、応答が json オブジェクトに解析されます。

ただし、ストック関数を使用して結果を文字列として取得するdata場合は、オブジェクトに変換するために次のようなものが必要です...

response = JSON.parse(data);

その後、次のことができます...

response.newEvent.blah;

あなたが期待するように。

あなたの例は実際には有効なjsonではないことに注意してください。プロパティ名は引用符で囲む必要があります...

{
    "newEvent": {
        "Event": {
            "name": "Something",
            "timestamp": {
                "month": "07",
                ...

他の誰かが指摘したように、データ型を指定することajax()で、結果をオブジェクトに変換するように指示することもできます( を呼び出した場合とまったく同じです...json()

$.ajax({
     ...
     dataType: 'json',
     success: function(data) {
         alert(data.newEvent.Event.name);   
     }
});
于 2013-07-28T00:21:06.553 に答える