从AJAX调用中获取JSON对象

14

我对AJAXjavascript都很陌生。在我的项目中,我需要在javascript文件中获取一个json对象。我已经使用了spray-json,它在URL中显示了这个json对象:http://localhost:8081/all-modules

{
  "status": "S1000",
  "description": "Success",
  "results": ["module1", "module2", "module3"]
}

我的Ajax调用

  $.ajax({
        url: 'http://localhost:8081/all-modules',
        dataType: 'application/json',
        complete: function(data){
            alert(data)
        },
        success: function(data){
            alert(data)
        }

它返回一个警报[object Object]。这里有什么问题?


尝试警报 data.status。我认为没有问题。你只是不能警报一个对象。 - pstenstrm
1
“alert” 将在调用 data 上隐式调用 toString, data 是一个对象字面量(JSON 解析方式),该值为 "[object Object]"。 - Ian
http://stackoverflow.com/questions/1036028/get-json-data-back-from-ajax-call - Bangalore
在弹出框中显示数据时,请使用JSON.stringify(data)。因为弹出框无法显示对象,它会将对象转换为字符串格式。 - Purushotham
那已经是一个JSON对象了。 - Aivan Monceller
7个回答

18

尝试以下方法:

var data = '{"name": "John","age": 30}';

var json = JSON.parse(data);

alert(json["name"]);
alert(json.name);

你还可以查看这个链接:如何在JavaScript中访问JSON对象


4
如果您希望查看JSON对象中的所有数据,请使用JSON.stringify。更多详细信息请参见此处。希望这可以帮到您。

3

只需在控制台输入console.log(data)即可查看您的对象。

您可以通过如下方式访问您的值

data.id //will give you id

这也取决于您创建JSON的方式,详见以下说明:

// if it simply json then access it directly
//Example => {"id":1,"value":"APPLE"}
data.id; // will give you 1 

// if it json array then you need to iterate over array and then get value.
//Example => [{"id":1,"value":"APPLE"},{"id":2,"value":"MANGO"}] then
data[0].id;  // will give you 1 

所以你的代码将会是这个样子。
 $.ajax({
    url: 'http://localhost:8081/all-modules',
    dataType: 'application/json',
    complete: function(data){
        alert(data.status);// S1000
        alert(data.description);// Success
        // for results you have to iterate because it is an array
        var len =  data.results.length;
        for(var i=0;i<len;i++ ){
            alert(data.results[i]);
        }
    },
    success: function(data){
        alert(data)
    }
})

0
尝试使用console.log(),它将在控制台上记录。alert不会显示对象。
 $.ajax({
    url: 'http://localhost:8081/all-modules',
    dataType: 'application/json',
    complete: function(data){
        console.log(data)
    },
    success: function(data){
        console.log(data)
    }

0

我认为你只是在打印对象。尝试这样做:

$.ajax({
    url: 'http://localhost:8081/all-modules',
    dataType: 'application/json',
    complete: function(data){
        alert("status = "+data.status+"descripttion"+data.description);
    },
    success: function(data){
         alert("status = "+data.status+"descripttion"+data.description);
    }

0

data 不再是 JSON 格式,而是一个 Javascript 对象。您不需要再使用像 jQuery.parseJSON 这样的函数。

这是初学者常犯的错误之一。

如果您想查看此 Javascript 对象,请尝试 alert(JSON.stringify(data));


0
尝试使用 data[0].status;。您的数据现在在一个对象中。在 console.log(data) 中,您可以看到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接