我正在尝试使用jQuery将表单POST到chargify。我的"Net"选项卡显示了一个302重定向(红色表示错误),但jQuery抛出了一个404错误。是否可以从浏览器预生成一个x域、发布、重定向请求,或者我需要使用代理?
$(function() {
var endpoint = "https://api.chargify.com/api/v2/signups"
$('#new_sub_form').on('submit', function(e){
e.preventDefault()
var jqxhr = $.ajax({
type: "POST",
url: endpoint,
crossDomain:true,
data: $('#new_sub_form').serialize(),
success: function(data, textStatus, request){
console.log(request.getResponseHeader('Location'));
},
error: function (request, textStatus, errorThrown) {
console.log(request.getResponseHeader('Location')); // Returns null
}
})
})//on('submit')
})//ready()
更新(更多信息):所以我意识到302正在将我重定向到服务器上不存在的页面。不幸的是,一旦我解决了这个问题,我仍然有一个问题。据我所知,我POST到chargify,然后他们用我指定的URI将302发送回浏览器。这个URI位于我的服务器(目前为localhost)上。一旦用户被重定向,我的服务器就会解析响应并返回JSON。我通过复制粘贴到另一个选项卡来测试响应标头的位置,效果很好。
Chargify只提供https,而我的本地主机是http。这会导致错误吗?!HTTP响应
前几天遇到了一个非常类似的问题。不过我使用的是ASP.NET MVC4。
如果您使用CCD_ 1还需要添加,
dataType: 'json or html depending on the return value',
xhrFields: {
withCredentials: true
},
您还需要添加以下标题"Access Control Allow Origin:"http://yourdomain.net",访问控制允许凭据:true",在您的情况下可能还有"访问控制允许方法:GET,POST"以及您的RESPONSE。
正如他们所描述的,你应该使用"transarent重定向",这基本上是将用户重定向到Chargify后的标准形式,他们会再次将用户重定向回你在负载中指定的URL。这意味着用户将短暂地离开你的网站并返回到它
<form method="post" action="https://api.chargify.com/api/v2/signups">
</form>
文档:https://docs.chargify.com/chargify-direct-introduction