嘿,在这个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”,为什么如果这是正确的?谢谢
答案 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请求的响应文本无关。