我正在为我的销售部门编写Chrome扩展程序,以帮助将销售线索从一个Freshsales帐户转移到另一个帐户,并且我使用他们的RESTful API来实现这一目标。 GET请求工作正常,但我似乎无法发出任何POST(甚至PUT)请求。
响应始终是“ 422无法处理的实体”(当我尝试对要发送的JSON进行字符串化时)或“ 500 Internal Server Error”(当我尝试按原样发送JSON时)。奇怪的是,问题不在于端点-我可以从Node.js应用程序甚至使用cURL成功向其发出POST请求。因此,我认为它与扩展名有关。
下面的代码使用JQuery Ajax发送请求,但是我也尝试使用fetch,XmlHTTPRequest进行此操作,甚至还尝试使用Axios来达到很好的效果。什么都没有。
这是我的popup.js
文件中带有测试功能的摘录(以前是content.js
中的文件,并且不能完全一样工作):
$.post({
url: "https://{domain}.freshsales.io/api/leads",
headers: {
"Authorization": "Token token={api_token}",
"Content-Type": "application/json"
},
data: {"lead":{"first_name":"James","last_name":"Testson","email":"james.test@gmail.com","company":{"name":"Business Inc."}}}
}).then(function(res){
console.log(res);
}, function(err){
console.log(err);
});
}
这是我的manifest.json
(这是本教程的经过修改的示例,因此可能有一些不必要的权限)
{
"name": "Lead Transfer Tool",
"version": "1.0",
"description": "guess what it does",
"permissions": [
"activeTab", "declarativeContent", "storage", "https://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"page_action": {
"default_popup": "popup.html"
},
"manifest_version": 2
}
最大的问题是,我什至无法正确调试-响应是单个错误代码(如果发生错误422),或者整个HTML页面上的内容基本上是“发生了错误,我们很抱歉等等。” (如果出现错误500)。与Chrome扩展程序有什么特定的联系吗?还是我只是看错了方向?
答案 0 :(得分:0)
在此,我使用content.js来完成我需要做的所有事情 也许这对您有帮助:
let xml = new XMLHttpRequest();
xml.open('POST', "https://localhost:44311/crawler/hsx", true);
xml.setRequestHeader("Content-Type", "application/json; charset = UTF-8");//t think this is main problem cause your error
xml.onreadystatechange = function () {
if (xml.readyState == 4) {
console.log("Success!");
}
}
xml.send(JSON.stringify(arrObj[i]));
}
您也可以指出我的劣势,谢谢!