【发布时间】:2012-06-03 06:24:30
【问题描述】:
我正在 beta builder 中构建它,我真的很不知道如何在我的 contentScriptFile 中进行 ajax 调用。我想拉一个 ajax 请求以动态地将数据拉回脚本,以便我可以更改页面内容。我一直在搜索和搜索,显然是错误的术语。帮助表示赞赏!谢谢
main.js
代码:
exports.main = function() {};
var data = require("self").data;
var pageMod = require("page-mod");
pageMod.PageMod({
include: "http://www.mozilla.org/*",
contentScriptWhen: 'ready',
contentScriptFile: [
data.url('jquery.1.7.1.js'),
data.url('common.js'),
data.url("mozilla.top.js")
]
})
mozilla.top.js
代码:
var qs = parseQS();
var foo= qs['string'];
var Request = require('request').Request;
Request({
url: "http://www.myremotepage.org?q="+foo,
onComplete: function (response) {
alert(response);
}
}).get();
alert('test');
阐明最终目标的旧代码 - http 请求不返回任何内容,即使它在浏览器中工作。假设这是第 3 方 ajax 工具的权限问题,并开始使用附加请求工具。
代码:
/*
$.ajax({
url: 'http://www.myremotepage.org?q='+foo,
data: {q:strSearchQuery},
dataType: 'json',
success: function(data) {
var div = $("<div style='background-color: #ececec;'><h2 style='text-align: right; font-size: 11px; color: #666;'>Test</h2><ul id='ptcid'></ul></div>");
alert(data.length);
for(var i = 0; i < data.length; ++i)
{
alert('test');
div.find('ul').append('<li></li>');
div.find('ul li:last').append('<h3>' + data[i].header+ '</h3>');
div.find('ul li:last').append('<div>'+data[i].body+'</div>');
div.find('ul li:last').append('<div>' + data[i].footer + '</div>');
}
div.insertBefore('#header');
}
});
*/
【问题讨论】:
-
jsonp callback error 的可能重复项。至少,我的回答也适用于你的问题。
-
所以请求会在 main.js 中,而回调会在 mozilla.top.js 中?请求如何知道要等到 pagemod 准备好?文档还说不要使用不安全的窗口-因此必须有更好更正确的方法。
标签: javascript firefox-addon firefox-addon-sdk