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"
});
})
});
答案 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
)。这就是你得到错误的原因。