无法获取JSON对象

时间:2011-03-27 20:38:00

标签: javascript ajax json

嘿,在这个url 1234 /?fmt = json下我创建了一个像这样的json对象

SurveyJson = {question:$("#question").val(),choice:Choice,count:Count};
var jsonString = JSON.stringify(SurveyJson);

我试图通过AJAX调用来检索json对象

var url = "1234?fmt=json";
$.ajax({
    url: url,
    type: "get",
    dataType: 'json',
    success: function (data) { 
        $("#display").html(data);
    }
});

为什么我不能显示数据?我试过,如果我越过dataType参数并保持其他相同,我可以以某种方式得到json字符串,我不知道为什么。而且我无法帮助但是注意到有些类似问题的人将“post”作为类型而不是“get”,为什么如果这是正确的?谢谢

2 个答案:

答案 0 :(得分:0)

如果删除dataType,则默认情况下它将返回为html(这将是一个长字符串)。我建议将数据输出为字符串(通过使dataType'html'或删除它),并使用此JSON validator来确保问题不存在。

GET和GET定义请求的方法。 GET将利用查询字符串(url)。您希望根据示例网址使用GET。将您的ajax调用更改为此

$.ajax({
    url: '1234',
    type: "get",
    data: { 'fmt': 'json' },
    dataType: 'json',
    success: function (data) { 
        $("#display").html(data);
    }
});

答案 1 :(得分:0)

确保您的“回调网址”1234 /?fmt = json仅返回json

例如尝试硬编码值并查看它是否有效,更改该URL的代码以将其输出为您的http响应并删除其他内容。只是回答这条线上显示的确切内容,而不是别的。

{question:"my question",choice:"a choice",count:3}

将您的主叫代码更改为:

var url = "1234?fmt=json";
 $.ajax({
    url: url,
    success: function (data) { 
        alert(data);
        alert(data.question);
    }
});

如果你看到两个警告框;第一个内容为“[Object object]”(根据浏览器的不同而略有不同)和第二个带有“我的问题”的警报,那么您将有一个良好的开端。回复并告诉我们,我们将从那里接收它。

此外,将“type”属性设置为“get”或“post”对于将http请求的响应文本解析为1234 /?fmt = json,与浏览器中的有效json对象无关。 Get和Post有重要的区别,但与解析http请求的响应文本无关。