使用ajax成功函数解析json

时间:2016-08-30 16:29:58

标签: javascript jquery json ajax

我试图显示我得到的json并在ajax的成功函数中解析它。

到目前为止我所拥有的:

的Ajax:

data = "Title=" + $("#Title").val() + "&geography=" + $("#geography").val();
alert(data);


url= "/portal/getResults.php";

$.ajax({
        url: url,

        type: "POST",
        //pass the data
        data: data,
        dataType: 'json',

        cache: false,
        //success
        success: function(data) {

                alert(data);

        }
    });

getResults.php(JSON输出):

{

"results": [
{
    "DocId": 2204,
    "Title": "Lorem ipsum dolor sit amet, consectetur",
    "Locations": [
        {
            "State": "New York",
            "City": ""
        },
        {
            "State": "New York",
            "City": "New York City"
        }
    ],
    "Topics": [
        3,
        7,
        11
    ],
    "PublicationYear": "2011",
    "Organization": "New  Yorks Times",
    "WebLocation": "www.google.com",
    "Description": "Lorem Ipsum"
}
],
"TotalMatches": 1

}

我希望数据中的结果是来自getResults.php的json,而是得到[object Object]。

我也尝试过以下代码,但没有得到回应:

success: function(data) {
                var json1 = JSON.parse(data);
                alert(json1);
        }

3 个答案:

答案 0 :(得分:1)

因为你告诉jQuery你想要dataType:'json',所以ajax函数会将JSON响应解析为一个对象。您看到的结果对象应该是一个对象,其数据与您服务器的JSON响应相匹配。如果您需要字符串版本,请尝试JSON.stringify(),否则您可以按原样使用该对象:data['results'][0]['DocId']

祝你好运!

答案 1 :(得分:0)

以下是您的请求示例:http://jsfiddle.net/5y5ea98n/

var echo = function(dataPass) {
    $.ajax({
        type: "POST",
        url: "/echo/json/",
        data: dataPass,
        cache: false,
        success: function(json) {
            alert(JSON.stringify(json));
        }
    });
};

$('.list').live('click', function() {
    $.get("http://www.json-generator.com/api/json/get/bQxORzxQGG?indent=2", function(data) {
        var json = {
            json: JSON.stringify(data),
            delay: 1
        };
        echo(json);
    });
});

答案 2 :(得分:0)

我尝试了一些与此相关的代码并且它成功运行。

function ajaxToParseJson(){
AUI().use('aui-io-request', function(A){
    A.io.request('${jsonAjaxURL}', {
           dataType:'json',
           method: 'post',
           data: {
               execute: 'JsonLogic',
               numberVal:'Pass Json String Here if needed from Screen'
           },
           on: {
                   success: function() 
                   {
                       var empName = this.get('responseData').name;
                       var id = this.get('responseData').id;
                       console.log("Name: "+empName);
                       console.log("Id: "+id);
                     /** Since return type of this function is bydefault Json it will return Json still if you want to check string below is the way**/
                    var data = JSON.stringify(this.get('responseData'));
                    alert(data);
                   }
               }
        });

});

}

我有一个带有两个字段id,name。的员工类。