JSON PUT请求错误

时间:2012-06-20 14:52:34

标签: javascript jquery json

我正在尝试使用JSON对PUT调用API。我正在使用jQuery,从我可以告诉我的代码看起来正确:

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url: 'https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/capture',
            type: 'PUT',
            data: { 'reg_FirstName': 'First',
                    'reg_LastName': 'Last',
                    'reg_Phone': '123-342-1211',
                    'reg_Email': 'email@email.com',
                    'reg_Company': 'My Company',
                    'reg_Address1': '123 Traffic Lane',
                    'reg_Address2': '',
                    'reg_City': 'Atlanta',
                    'reg_State': 'GA',
                    'reg_Zip': '12232',
                    'reg_Country': 'United States'  
            },
            success: function() { alert('PUT completed'); }
        });
    });
</script>

但是当我运行它时,我收到以下错误:

XMLHttpRequest cannot load https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/capture. Origin http://localhost:65116 is not allowed by Access-Control-Allow-Origin.

我到处寻找并尝试了我能找到的一切无济于事。所以我认为我的代码可能是错误的做一个JSON PUT调用。我的代码看起来不对吗?如果是这样我怎么能解决它。如果没有,对该错误有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的代码是正确的,但是除非您请求数据的域返回正确的CORS标头,否则无法跨域执行PUT请求。

答案 1 :(得分:0)

你的jQuery看起来不错。问题在于Origin http://localhost:65116 is not allowed by Access-Control-Allow-Origin.

这表明Cross-Domain资源加载,在大多数情况下都是禁止的。如果您可以控制https://app.clickdimensions.com/Service.svc/v1/account/accountIdHere/capture,则可以修改它以允许来自特定域的此类请求,或者您可以使用JSONP而不是JSON来执行跨域请求,但我不确定您是否成功在这种情况下的HTTP PUT。据我所知,JSONP需要成为HTTP GET。