0

我必须动态地从另一个域动态获取数据,并且我想使用 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>

但它只是返回错误。为什么?我做错什么了吗?欢迎任何帮助/建议。谢谢。

4

2 回答 2

0

您不能从您的 JavaScript 所源自的域以外的任何域请求数据。对于这种情况,您应该使用 JSONP(带填充的 JSON)。在 jQuery ajax 函数中将 dataType 更改为 JSONP。像这样...

datatype : 'JSONP'

此外,您的跨域(http://192.168.10.34:8576/home/GetJsonData)应该支持 jsonp,否则您的请求将失败。

于 2013-07-29T05:22:36.407 回答
0

使用 JSONP hack 的替代方法是允许在您的应用程序上进行跨域资源共享。

处理这个问题非常简单,但要理解这会引发规模较小到中级的安全问题,因此请务必妥善处理这些问题。

只需将Access-Control-Allow-Origin服务器应用程序中的响应标头设置为*. CORS 请求也会发出OPTIONS预检请求,因此您可以选择是否也处理这些请求。

于 2013-07-29T05:29:59.100 回答