JSON.parse 意外结束数据火狐狸插件
JSON.parse unexpected end of data fire fox addon
我使用附加组件构建了一个具有基本功能的插件:
- 从第 http://youtube.com
页获取评论 (A)。- 调用 Web 服务器处理此文本 (A) 并返回 json
- 将 (A) 替换为 (B) 并向用户显示
我对服务器的请求有问题(请参阅浏览器控制台中有很多行):
GET http://localhost:8084/Test/Test [HTTP/1.1 200 OK 8ms]
JSON.parse unexpected end of data fire fox addon.
但最后一个请求是成功。而且我的代码不会更改注释,因为它在请求响应之前发生了变化。
库/主.js
var tag = "p";
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "*.youtube.com",
contentScriptFile: data.url("element-getter.js"),
contentScriptWhen: "end"
});
data/element-getter.js
var target = document.querySelector('#watch-discussion');
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var commenttexts = document.querySelectorAll(".comment-text");
for (var i = 0; i < commenttexts.length; ++i) {
var url = "http://localhost:8084/Test/Test";
var request = new XMLHttpRequest();
var cm = " hello ";
request.open("GET", url, true);
request.onload = function () {
var jsonResponse = JSON.parse(request.responseText);
var status = jsonResponse.status;
cm = status;
};
request.send();
commenttexts[i].innerHTML = cm;
}
});
});
var config = { childList: true };
observer.observe(target, config);
JSON 服务器返回:
{"status":"1","label":"true"}
您正在创建一个异步请求,因此
:commenttexts[i].innerHTML = cm;
应该在请求响应时调用,即在 request.onload 函数内部,而不是在request.send();
之后调用。将它放在最后,意味着它将在请求返回之前首先运行该部分。
你应该有这样的东西:
for (var i = 0; i < commenttexts.length; ++i) {
(function(i) {
var request = new XMLHttpRequest();
var cm = " hello ";
request.open("GET", url, true);
request.onload = function () {
var jsonResponse = JSON.parse(request.responseText);
var status = jsonResponse.status;
cm = status;
commenttexts[i].innerHTML = cm;
};
request.send();
})(i);
}
这样,它只有在返回时才会更改,并且您可以访问 onload 函数中的 i 变量。
相关文章:
- 如何在Angular2中使用jQuery插件
- 可以前端maven插件使用节点,npm已经安装
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- TableExport jquery插件:文件名和扩展名问题
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- jQuery插件-从插件中调用公共方法
- 压缩phonegap中ios的图像插件
- jQuery粘性插件可变顶部间距
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Wordpress插件根据需要加载js和css
- jQuery Wan Spinner插件的多个字段
- jQuery Facebox插件:关注弹出的外观
- CKEditor v4:自制插件中对话框的动态标题
- Jquery标签插件粘贴问题
- JSON.parse 意外结束数据火狐狸插件