有没有办法用Javascript完成此cURL请求?
curl -X POST https://api.mongohq.com/databases/vehicles/collections/rockets/documents?_apikey=12345 \
-H "Content-Type: application/json" \
-d '{"document" : {"_id" : "bottle", "pilot_name" : "Elton John"}, "safe" : true }'
下面的代码已尽我所能,但是它返回{“ error”:“无法创建mongohq :: api :: document”}。
function postsBeaconMessage (postTo, beaconMessage , targetFrame) {
var beacon = document.createElement("form");
beacon.method="POST";
beacon.action = postTo;
//beacon.target = targetFrame;
var message = document.createElement("input") ;
message.setAttribute("type", "hidden") ;
message.setAttribute("name", "document") ;
message.setAttribute("value", beaconMessage);
beacon.appendChild(message) ;
beacon.submit();
}
执行此操作时出现500错误,但是cURL可以正常工作。我认为设置内容类型是一个问题。有没有办法在表单或发布对象中设置内容类型?似乎mongohq需要明确的内容类型声明。
我无权更改服务器上的同源策略,而且我很确定自己将无法执行PHP。
任何想法都会有所帮助。我死在这里的水中。
最佳答案
从您的代码中,您似乎正在向具有POST
数据且https://api.mongohq.com/databases/vehicles/collections/rockets/documents?_apikey=12345
标头设置为{"document" : {"_id" : "bottle", "pilot_name" : "Elton John"}, "safe" : true }
的Content-Type
URL发送application/json
请求。
可以通过执行以下操作在JavaScript中实现
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
// Check if request is completed
if (xhr.readyState == XMLHttpRequest.DONE) {
// Do what needs to be done here
console.log(xhr.response);
}
}
// Set the request URL and request method
xhr.open("POST", "https://api.mongohq.com/databases/vehicles/collections/rockets/documents?_apikey=12345");
// Set the `Content-Type` Request header
xhr.setRequestHeader("Content-Type", "application/json");
// Send the requst with Data
xhr.send('{"document" : {"_id" : "bottle", "pilot_name" : "Elton John"}, "safe" : true }');