【发布时间】:2018-05-11 10:04:19
【问题描述】:
我正在尝试从我的 localhost:4502 端口将数据发布到 API。当我尝试使用 POSTMAN 将数据发布到此 API 时,通过提供基本授权密钥将数据添加到后端。我试图在 Ajax Jquery 调用中实现相同的功能,但出现 CORS 错误。我第一次在 jquery 中尝试发布数据,请在这里提供帮助,我可以添加什么。我已经获得了基本授权的 API 密钥,因为用户名和密码可以留空。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#Save").click(function(){
var person = new Object();
person.Name = $('#Name').val();
person.EmailAddress = $('#EmailAddress').val();
person.CustomFields = [0];
person.CustomFields[0].Key = "[Country]";
person.CustomFields[0].Value = $('#Country').val();;
$.ajax({
url: 'https://api.createsend.com/api/v3.1/subscribers/7c7a6087b0e450ad72b38be83098e271.json',
type: 'POST',
dataType: 'json',
data:person,
success: function(data,textStatus,xhr){
console.log(data);
},
error: function(xhr,textStatus,errorThrown){
console.log('Error Something');
},
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic OTdlMjVmNWJiMTdjNzI2MzVjOGU3NjlhOTI3ZTA3M2Q5MWZmMTA3ZDM2YTZkOWE5Og==");
}
});
});
});
</script>
【问题讨论】:
-
您尝试做的是通过 AJAX 访问 api。这是不可能的(理论上是这样,但我不打算讨论)。您应该使用服务器语言(PHP、Node.js 等)向 api 发出 HTTP 请求。从那里,您可以获取数据并根据需要使用它。
-
您正在寻找 JSONP 的跨域 AJAX 请求。
-
@UghThatGuyAgain 感谢您的回复。所以你的意思是我需要在 php 或 node.js 中编写相同的调用?
-
@AshishRai 是的;然而,它不止于此。后端语言需要能够与前端进行通信。这不仅仅是重写同一个调用,因为 HTTP 是一个与 AJAX 完全不同的领域。一旦你学会了如何与后端进行 HTTP 调用,你就需要学习如何与前端进行通信(使用 Node,这并不难,imo)。所以,要完成这件事:Node.js 或 PHP 将允许您进行调用,然后您可以将其传达给前端。 tutorialspoint.com/nodejs
-
@UghThatGUyAgain 什么?