Jquery 将AJAX返回数据转换为JSON
我正在尝试检索JSON对象中的数据(我已经验证该对象的格式是否正确),并将数据输出到firebug控制台。我使用JSONLint验证了JSON(http://jsonlint.com/)要知道数据不会以JSON对象的形式返回,因为当我记录它时,它是以文本而不是对象的形式记录的。当我看ajax文章时,有一个JSON选项卡,它显示了对象,我只是因为某种原因无法检索它 我的ajax调用是Jquery 将AJAX返回数据转换为JSON,jquery,ajax,json,uncaught-exception,Jquery,Ajax,Json,Uncaught Exception,我正在尝试检索JSON对象中的数据(我已经验证该对象的格式是否正确),并将数据输出到firebug控制台。我使用JSONLint验证了JSON(http://jsonlint.com/)要知道数据不会以JSON对象的形式返回,因为当我记录它时,它是以文本而不是对象的形式记录的。当我看ajax文章时,有一个JSON选项卡,它显示了对象,我只是因为某种原因无法检索它 我的ajax调用是 $.ajax({ url:'/coords/base', data: {
$.ajax({
url:'/coords/base',
data: { type: obj.type, id: obj.id },
dataType:'text',
type:'get',
async:false,
success: function(data) {
console.log(data);
}
});
我的返回数据如下所示:
{
"1": {"name":"TEXT","coords":[
{ "entry":3,"x":15,"y":15 }
]}}
当我将AJAX调用设置为变量并添加.responseText;在调用结束时,我可以检索AJAX调用的纯文本返回。我以为我可以使用$.serialize()或$.parseJSON(),但随后我得到一个错误“未捕获异常:语法错误,无法识别的表达式”
最终目标是从这个responseText中检索内容,并在我的文件中使用JSON对象。此调用必须同步完成,因为它加载重要数据
任何帮助都将不胜感激。为什么不使用
这相当于
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
然后,您应该能够执行以下操作:
$.getJSON('file.json', function(data) {
$.each(data, function(i) {
console.log(data[i]);
});
});
编辑
也许,我误解了这个问题
编辑#2
或许这个问题有助于:
这建议使用以下方法:
$.ajax({
type: 'GET',
url: 'whatever',
dataType: 'json',
success: function(data) { console.log(data);},
data: {},
async: false
});
当然,这与您的情况类似,因此我觉得我需要后退一步,重新分析问题。明确指示jQuery将响应视为文本:
$.ajax({
// ...
dataType: "text",
// ...
});
然后您将能够获得JSON字符串。但是,如果您计划在此后将其转换为JS值,那么让我阻止您:jQuery可以自动为您这样做。如果您将
dataType
指定给“json”
,或者只是让jQuery进行智能猜测,传递给success:
函数的data
参数将是解析后的json对象。您如何从服务返回数据?响应类型是application/json吗?如果删除转换器块,会有什么不同吗?This:converters:{“text json”:$.parseJSON()}。因为数据类型:“json”应该这样做,为什么要定义自己的转换器?JSON编码已经内置,我认为您提供的转换器是错误的。我已经删除了转换器,并发布了更新后的当前代码。那么您如何从服务返回数据?什么语言?您是否在响应中设置标题?等等等等?客户端上的一切看起来都正常,passcod的fiddle看起来很好——这说明您在服务端有问题。当我指定async:false时,使用getJSON()方法会出错。我试图用这些数据将其存储在一个变量中,以便在成功调用之外使用。重要的是,它是同步发生的,但是通过AJAX调用。我尝试将数据类型切换为文本(我将其设置为json),但仍然收到错误。多么令人失望:(@FélixSaparelli)你的链接对我非常有用。谢谢你。你救了我一天!