简单的ajax POST与跨域请求

时间:2015-03-28 21:46:59

标签: jquery ajax post cross-domain

我正在尝试将一个只有一个参数的简单表单发送到我的后端程序员制作的API,他告诉我,我需要做的就是使用ajax通过POST将一个参数发送到给定的URL。

问题是我得到了一个 No' Access-Control-Allow-Origin'标题存在错误。

我已阅读this个问题并尝试实施第一个答案的解决方案但没有成功。当我通过hurl测试API时,它没有问题。

这是我用来发送表单的代码

    $( document ).ready(function() {
        $('.btnEnviar').click(function(){
            $.ajax({
                type: 'POST',
                url: 'http://xxxxx.xxx/subscribers/subscribeEmail',
                datatype: 'jsonp',
                async: true,
                success:function(){
                    try{
                        alert("ok");
                    }catch (e){
                        alert(e);
                    }
                } 
            });                
        });
    });

这就是形式:

<form class="newsletter" method="post" action="http://xxxxx.xxx/subscribers/subscribeEmail">
                    <input type="text" placeholder="mail here!" class="input" name="email">
                    <input type="submit" class="send pull-right hidden" value="Subscribe me!" placeholder="Subscribe me!">
                    <span class="btnEnviar"><i class="fa fa-envelope"></i></span>
                </form>

不应该是该过程中涉及的任何PHP。

关于我可能做错什么的任何见解?

1 个答案:

答案 0 :(得分:-1)

尝试将crossDomain: truexhrFields: { withCredentials: true }添加到请求中:

$( document ).ready(function() {
    $('.btnEnviar').click(function(){
        $.ajax({
            type: 'POST',
            url: 'http://xxxxx.xxx/subscribers/subscribeEmail',
            datatype: 'jsonp',
            async: true,
            xhrFields: {
               withCredentials: true
            },
            crossDomain: true,
            success:function(){
                try{
                    alert("ok");
                }catch (e){
                    alert(e);
                }
            } 
        });                
    });
});

请参阅http://api.jquery.com/jquery.ajax/