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

时间:2015-08-10 06:44:23

标签: jquery ajax json

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

.... trim(b); if(a.JSON&& a.JSON.parse)返回a.JSON.parse(b); if(n.test(b.replace(o,&#) 34; @ ...

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"
            });







            })
        });

1 个答案:

答案 0 :(得分:3)

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

因此,请从

更改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); // ...

     

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

     

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

(我的重点)

再次执行 ,您最终会在dataFilter上调用toString,这可能会导致data(如果顶级对象是对象) )或其他不可解析的东西(如果顶级的东西是一个数组,"[object Object]"调用Array#toString)。这就是你得到错误的原因。