【问题标题】:SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 3 of the JSON dataSyntaxError: JSON.parse: JSON 数据的第 1 行第 3 列的 JSON 数据后出现意外的非空白字符
【发布时间】:2015-08-10 14:53:21
【问题描述】:

SyntaxError: JSON.parse: JSON 数据第 1 行第 3 列的 JSON 数据后出现意外的非空白字符

....trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@...

jquery-....min.js(第 2 行,第 11012 列)

我的代码

$(document).ready(function(){
        $('.cls_list_img3').live('click',function(){
            $('footer').after('<div class="error_bg" id="info_message" style="top: 0px; display: block;background:gold"><div class="center_auto"><div class="info_message_text message_area" style="color:black" id="msg_pin">Please Wait....</div><div onclick="return closeNotification()" class="info_close_btn button_area"></div><div class="clearboth"></div></div><div class="info_more_descrption"></div></div>');

             var imgsrc = $(this).attr('rel');
//alert(imgsrc);
            var img = imgsrc.replace('&', '*');
            var img1 = img.replace('&', '*');
            var img2 = img1.replace('&', '*');
            var img3 = img2.replace('&', '*');
            var img4 = img3.replace('&', '*');
             var title = encodeURIComponent($.trim($("#title").val().toString()));
             var body = $(this).children('.body').val();
             var rss_title = $(this).children('.title').val();
             var category = $(this).children('.category').val();
             var rss_link = $(this).children('.rss_link').val();
              var data = "imgsrc=" + img4 + "&source="+rss_link+"&title=" + rss_title+"&des="+body+"&rss_title="+rss_title+"&category="+category;
            // alert(body);
             //alert(rss_title);
               $.ajax({type: "POST", url: "<?php echo base_url() ?>share/pinuploudOneclick",
                                      dataType: 'json',
                                    // async: true,
                                     data: data,
                                     success: function(data)
                {
                    var obj = jQuery.parseJSON(data);
                    //alert(data);
                    alert(obj.message);
                       if(obj.message == 'error'){
                           $('#msg_pin').html('You already uploaded this Pin');
                $('#info_message').css('background','lightpink');

                           }else{
                    $('#msg_pin').html('Pin uploaded successfully');
                    $('#info_message').css('background','lightgreen');
                }
                    setTimeout(function(){ 
                        $('#info_message').remove();
                         }, 3000);
                   // $('#fadeimgoverlay').removeClass('fadeimgoverlay_bg');
                   // $('#fadeimgloading').hide();
                    //$('.event-containernarrow').html(data);
                   // $('.main_container').css('display', 'none');
                    //$('.bd_detail').html(data);
                    //$('body').css('overflow', 'hidden');
                },
                dataType: "html"
            });







            })
        });

【问题讨论】:

  • var obj = jQuery.parseJSON(data); - data 已被解析
  • 是的...但是在控制台显示 SyntaxError 消息。
  • 可能是因为双重解析为 T.J.克劳瑟在他的回答中解释了

标签: jquery ajax json


【解决方案1】:

jQuery 在调用 success 之前会为您解析 JSON,因为您已经指定了 dataType: 'json'。 (如果你没有,并且服务器回复了正确的Content-Type,无论如何它都会这样做。)所以你可以直接使用data,你不想在上面调用JSON.parse

所以改变你的success函数

success: function(data)
{
    var obj = jQuery.parseJSON(data); // Don't need this!
    alert(obj.message);
    // ...

success: function(obj)                // Just use this directly
{
    alert(obj.message);
    // ...

来自文档:

success

类型:函数(任何数据,字符串 textStatus,jqXHR jqXHR)

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据dataType 参数或dataFilter 回调函数格式化(如果指定);描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。

(我的重点)

通过再次,您最终会在data 上调用toString,这可能会导致"[object Object]"(如果顶级事物是对象)或其他无法解析的(如果顶层的东西是一个数组,就像Array#toString 调用Array#join)。这就是您收到错误的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2019-12-27
    • 1970-01-01
    • 2017-04-28
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多