【发布时间】:2012-05-07 06:55:15
【问题描述】:
我正在从 chrome 扩展内容脚本向我控制的服务器发送 POST。我在清单中设置了权限。这是我的 XHR 代码。 (我想为此避免使用 jQuery)。它发送一个空的responseText
var xhr = new XMLHttpRequest();
xhr.open("POST",'http://mysite.com/make',true);
xhr.onreadystatechange=function() {
if (xhr.readyState == 4) {
var res = JSON.parse(xhr.responseText);
console.log(res);
}
}
xhr.send({'textbox':data[0].user,'from':'extension'});
data[0].user 是我直接从 Twitter API 获得的对象
在我的 CI 控制器中
$user = $this->input->get_post('textbox', TRUE);
$from = $this->input->get_post('from', TRUE);
$fullURL = 'http://www.google.com'; //example of a URL from code.
$json = $this->output->set_content_type('application/json');
$json->set_output(json_encode(array('URL' => $fullURL)));
响应文本为空
另一方面,jquery 调用工作正常
$.post("http://mysite.com/make", { 'textbox': data[0].user, 'from':'jquery' },
function(data) {
console.log(data);
});
【问题讨论】:
-
您在使用 FireBug/Chrome-Dev 工具吗?检查服务器正在发送什么响应?并退后一步.. 尝试记录 PHP 生成的 JSOn 字符串?
-
我安装了chromePHP。将尝试调试。
-
但在此之前试试 xhr.post("textbox="+ data[0].user + "&from=extension");而不是你所做的。我认为它应该有效。
-
没用 :/ ,
Uncaught SyntaxError: Unexpected end of input xhr.onreadystatechange,来自 Twitter 的 API 调用可以使用扩展 XHR。它使用 GET 查询字符串和回调=?不过。 -
只要确保 data[0].user 是一个字符串而不是 json。如果是 JSOn,则从中提取 userId。
标签: javascript codeigniter google-chrome google-chrome-extension xmlhttprequest