26

次の関数を使用して、jQuery AJAX 経由でフォームを投稿します。

$('form#add_systemgoal .error').remove();
var formdata = $('form#add_systemgoal').serialize();
$.ajaxSetup({async: false});  
$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {
        console.log(data);   
    },
});

問題なく投稿されますが、応答を解析できません。次のようにコンソールに記録されます

{
    "success": 1,
    "inserted": {
        "goal_id": "67",
        "goalsoptions_id": "0",
        "user_id": "0",
        "value": "dsfdsaf",
        "created": "2013-06-05 09:57:38",
        "modified": null,
        "due": "2013-06-17 00:00:00",
        "status": "active",
        "actions_total": "0",
        "actions_title": "sfdgsfdgdf",
        "action_type": "input",
        "points_per_action": "1",
        "expires": "2013-06-11 00:00:00",
        "success": 1
    }
}

それが私が求めている答えだと信じています。

alert(data.success);ただし、応答オブジェクトの他のメンバーを実行しようとすると、 undefined.

アドバイスをいただければ幸いです。

4

6 に答える 6

21

呼び出し

var parsed_data = JSON.parse(data);

必要に応じてデータにアクセスできるようになるはずです。

console.log(parsed_data.success);

「1」が表示されるはずです

于 2013-06-05T09:05:41.220 に答える
16
 $.ajax({     
     type: "POST",
     url: '/admin/systemgoalssystemgoalupdate?format=html',
     data: formdata,
     success: function (data) {
         console.log(data);
     },
     dataType: "json"
 });
于 2013-06-05T09:06:20.460 に答える
4

JSON文字列を解析してオブジェクトにする必要があります

var dataObject = jQuery.parseJSON(data);

次のように呼び出すことができます。

success: function (data) {
    var dataObject = jQuery.parseJSON(data);
    if (dataObject.success == 1) {
       var insertedGoalId = dataObject.inserted.goal_id;
       ...
       ...
    }
}
于 2013-06-05T09:09:03.223 に答える
2

$.ajaxではなくを使用しているため$.getJSON、戻り値の型はプレーン テキストです。dataJSON オブジェクトに変換する必要があります。

$.ajaxto を変更することでこれを行うことができます$.getJSON(これは の省略形であり$.ajax、json を取得するように事前構成されているだけです)。

または、文字列を受け取った後、次のように解析しdataて JSON にすることもできます。

    success: function (data) {
         var obj = $.parseJSON(data);
         console.log(obj);
    },
于 2013-06-05T09:07:50.057 に答える
0

を使用しparseJSONます。ドキュメントを見てください

var obj = $.parseJSON(data);

このようなもの:

$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {

        console.log($.parseJSON(data)); //will log Object

    }
});
于 2013-06-05T09:06:08.093 に答える