0

我正在尝试使用 JSON 对 API 进行 PUT 调用。我正在使用 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 调用。我的代码看起来不对吗?如果是这样,我该如何解决。如果没有,对那个错误有什么想法吗?

谢谢!

4

2 回答 2

1

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

于 2012-06-20T14:55:49.007 回答
0

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

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

于 2012-06-20T15:03:17.080 回答