Joomla JSON.parse:JSON 数据后出现意外的非空白字符
Posted
技术标签:
【中文标题】Joomla JSON.parse:JSON 数据后出现意外的非空白字符【英文标题】:Joomla JSON.parse: unexpected non-whitespace character after JSON data 【发布时间】:2018-04-25 13:20:14 【问题描述】:我想使用 jQuery.ajax 将新标记(关于文章)发送到数据库并更改页面上的标记数量。 但是我从服务器收到了错误的 AJAX 响应。
"likes":"40","dislikes":"29""success":true,"message":null,"messages":null,"data":[]
和错误:
SyntaxError: JSON.parse: 意外的非空白字符后 JSON数据第1行第31列的JSON数据
似乎不能有第二个ajax响应。但我不明白它去了哪里。
这是我来自 Joomla 插件的 php 代码。
$marks = plgContentLikesHelper::getMarks($articleID);
$data=array();
$data['likes'] = $marks->likes;
$data['dislikes'] = $marks->dislikes;
echo json_encode($data);
这是我来自 Joomla 插件的 jQuery 代码。
jQuery(document).ready(function()
jQuery('div.plg-likes > a ').click(function (e)
var id = jQuery(this).parent('div.plg-likes').attr('id');
var opinion = jQuery(this).attr('id');
jQuery.ajax(
type: "POST",
dataType: "json",
url: "index.php?option=com_ajax&group=content&plugin=likes&format=json",
data: articleId: id, articleOpinion: opinion ,
success: function(data) /* troubles are here */
alert(data["likes"]);
)
return false;
)
)
【问题讨论】:
【参考方案1】:
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 31 of the JSON data
这个错误很容易解释,您在 31 列的 JSON 结构中有一个错误。问题中提供的 JSON 是:
"likes":"40","dislikes":"29""success":true,"message":null,"messages":null,"data":[]
所以, 表示对象,您的字符串连续有两个 JSON 对象。查看json.org 以了解您的 JSON。
第 30 列是您的对象结束的地方,并且似乎添加了第二个对象……您没有指定 Joomla 的版本,因此 JSON 处理在您需要 read the Joomla docs 的所有不同版本之间有所不同在为您使用的版本处理 JSON 的方式上。
我的猜测是 Joomla(我已经有一年多没有使用了)在它的标准 JSON 响应中添加了一些默认属性(这表明您使用的是相对较新的 3.x 版本)。
我建议你:
-
尝试在the Joomla Q&A site上提问
在
echo json_encode($data);
行之后尝试die()
(或类似的东西),而不是让Joomla 结束执行
看看JResponseJson,如果你的版本有的话。
【讨论】:
【参考方案2】:答案在页面响应后的下一个简单代码中:
死();
$db->setQuery($query);
$db->execute();
$marks = plgContentLikesHelper::getMarks($articleID);
$data=array();
$data['likes'] = $marks->likes;
$data['dislikes'] = $marks->dislikes;
echo json_encode($data);
die();
谢谢!
【讨论】:
以上是关于Joomla JSON.parse:JSON 数据后出现意外的非空白字符的主要内容,如果未能解决你的问题,请参考以下文章