我正在尝试使用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调用。我的代码看起来不对吗?如果是这样我怎么能解决它。如果没有,对该错误有任何想法吗?
谢谢!
答案 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。