我必须动态地从另一个域动态获取数据,我想使用ajax和jquery。我已经完成了以下操作。
<script type="text/javascript">
$(document).ready(function(){
$('#getdata').click(function(){
var sitename = $('#sitename').val();
var listname = $('#listname').val();
getdata(sitename, listname);
})
});
function getdata(sitename, listname){
$.ajax({
url : 'http://192.168.10.34:8576/home/GetJsonData?site='+sitename+'&listname='+listname+'&viewname=',
datatype : 'JSON',
type : 'GET',
crossDomain: true,
contentType: "application/json; charset=utf-8",
success : function(data){
console.log(data)
},
error : function(){
alert('error');
}
})
}
</script>
但它只是返回错误。为什么?我做错了什么吗? 欢迎任何帮助/建议。感谢。
答案 0 :(得分:0)
您不能从JavaScript所源自的域以外的任何域请求数据。对于这样的情况,您应该使用JSONP(带填充的JSON)。在jQuery ajax函数中将dataType更改为JSONP。像这样......
datatype : 'JSONP'
此外,您的跨域(http://192.168.10.34:8576/home/GetJsonData
)应支持jsonp,否则您的请求将失败。
答案 1 :(得分:0)
使用JSONP hack的替代方法是允许在您的应用程序上进行跨源资源共享。
处理这个问题非常简单,但要明白,这会大规模地打开轻微到中间的安全问题,因此请务必妥善处理它们。
只需将服务器应用程序中的Access-Control-Allow-Origin
响应标头设置为*
即可。 CORS请求还会发出OPTIONS
预检请求,因此您可以选择是否处理这些请求。