Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将AJAX返回数据转换为JSON_Jquery_Ajax_Json_Uncaught Exception - Fatal编程技术网

Jquery 将AJAX返回数据转换为JSON

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: {

我正在尝试检索JSON对象中的数据(我已经验证该对象的格式是否正确),并将数据输出到firebug控制台。我使用JSONLint验证了JSON(http://jsonlint.com/)要知道数据不会以JSON对象的形式返回,因为当我记录它时,它是以文本而不是对象的形式记录的。当我看ajax文章时,有一个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(),但随后我得到一个错误“未捕获异常:语法错误,无法识别的表达式”

最终目标是从这个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)你的链接对我非常有用。谢谢你。你救了我一天!