1

我正在尝试使用 jQuery 发布要收费的表单。我的“网络”选项卡显示 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 将我重定向到我的服务器上不存在的页面。不幸的是,一旦我解决了这个问题,我仍然有问题。据我所知,我发布到 chargify,然后他们使用我指定的 URI 将 302 发送回浏览器。此 URI 位于我的服务器上(目前为 localhost)。一旦用户被重定向,我的服务器就会解析响应并返回 JSON。我通过复制并粘贴到另一个选项卡中测试了响应标头位置,并且工作正常。

Chargify 只提供 https,而我的本地主机是 http。这会导致错误吗?! HTTP 响应

4

2 回答 2

0

前几天遇到了一个非常相似的问题。但是我使用 ASP.NET MVC4。

如果您使用它还不够,您crossDomain:true还需要添加, dataType: 'json or html depending on the return value', xhrFields: { withCredentials: true }, 您还需要添加这些标题“Access-Control-Allow-Origin:” http://yourdomain.net “,Access-Control-Allow-Credentials:true”和在您的情况下可能是“访问控制允许方法:GET,POST”以及您的响应。

于 2013-09-04T16:27:51.703 回答
0

Chargify Direct 不支持 ajax/CORS。

正如他们所描述的,您应该使用“transarent 重定向”,这基本上是将用户重定向到 Chargify 的标准表单发布,他们会将用户再次重定向回您在有效负载中指定的 URL。这意味着用户将短暂离开您的网站并返回。

<form method="post" action="https://api.chargify.com/api/v2/signups">
</form>

文档:https ://docs.chargify.com/chargify-direct-introduction

于 2015-05-25T22:34:20.903 回答