将AJAX返回数据转换为JSON

我正在尝试检索JSON对象中的数据(我已经validation了格式正确)并将数据输出到firebug控制台。 我使用JSONLint(http://jsonlint.com/)validation了JSON并且知道数据没有在JSON对象中返回,因为当我记录它时,它记录为文本而不是对象。 当我查看ajaxpost时,有一个JSON选项卡,它显示了对象,我出于某种原因无法检索它。

我的ajax电话是

$.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()然后我得到一个错误“未捕获的exception:语法错误,无法识别的表达式”。

最终目标是从此responseText中检索内容并在整个文件中使用JSON对象。 此调用必须同步完成,因为它会加载到重要数据中。

任何帮助将不胜感激。

明确指示jQuery将响应视为文本:

 $.ajax({ // ... dataType: "text", // ... }); 

然后,您将能够获取JSON字符串。 但是,如果你打算之后将它转换为JS值,那么让我停下来吧:jQuery可以自动为你做到这一点。 如果将dataType指定为"json" ,或者只是让jQuery进行智能猜测,则传递给success: function的data参数将是已解析的JSON对象。

为什么不使用$ .getJson()

这相当于

  $.ajax({ url: url, dataType: 'json', data: data, success: callback }); 

然后你应该能够做到以下几点:

 $.getJSON('file.json', function(data) { $.each(data, function(i) { console.log(data[i]); }); }); 

编辑

也许,我误解了这个问题。

编辑#2也许这个问题会有所帮助: 是否有一个不使用回调的$ getJSON版本?

建议使用这个:

 $.ajax({ type: 'GET', url: 'whatever', dataType: 'json', success: function(data) { console.log(data);}, data: {}, async: false }); 

当然,这看起来像你所拥有的,所以我觉得我需要退一步重新分析问题。