gpt4 book ai didi

javascript - 通过 Chrome 扩展将数据发送到 REST

转载 作者:行者123 更新时间:2023-12-02 15:07:18 24 4
gpt4 key购买 nike

我正在尝试使用 post 将我的选择发送到服务器,服务器需要 REST,使用高级 Rest 客户端测试了我的数据,一切正常,但是当我尝试从我的 chrome 扩展程序时,我收到了未定义的错误。这是我正在尝试的

chrome.runtime.sendMessage({
method: 'POST',
action: 'REST',
headers: {'Remote-User':'myuser'},
url: 'http://myserver/data/add/',
data: {'content': 'the paste content'}
}, function(responseText) {
alert(responseText);
});

非常感谢任何帮助,谢谢

更新

基于sdc,我像这样更改了代码,但responseText仍然未定义:(

function genericOnClick(info, tab) 
{
var url = 'http://mysite/data/add/';
var data = $.toJSON({'content': 'the paste content'});
$.ajax({
headers: {
'Remote-User':'username',
'Content-Type':'application/json;charset=utf-8'
},
url: url,
data: data,
method: 'POST',
dataType: 'json',
error: function(xhr, status, error){
alert(xhr.responseText);
},
success: function(data){
console.log('succes: '+data);
}

});
}

最佳答案

我认为您误解了 chrome.runtime.sendMessage 的用途。请参阅 Message Passing 的前两段文档。 sendMessage 用于“扩展与其 content scripts 之间的通信”,它不是为发送 HTTP 请求而设计的。

内容脚本还必须“设置一个runtime.onMessage事件监听器来处理消息”只有这样您才能收到来自sendMessage请求的有效响应

他们的示例的结果是未定义

chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
<- undefined

如果您尝试从 Chrome 扩展程序中执行 HTTP 请求,则应使用 XHR

var data = $.toJSON({'content': 'the paste content'});

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://myserver/data/add/", true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.setRequestHeader("Content-length", data.length);
xhr.setRequestHeader("Connection", "close");
xhr.setRequestHeader('Remote-User', 'myuser');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
console.log('xhr response: '+ xhr.responseText);
}
}
xhr.send(data);

关于javascript - 通过 Chrome 扩展将数据发送到 REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com