0

我有以下代码。我用它从另一个域地址获取一些数据。在我的本地网络中。如果有人能告诉我我在这里做错了什么或给我解决方案。

<html>
  <title>Jquery Json</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript">
    jQuery(document).ready(function($){
      $.ajax({ // ajax call starts
        type:"GET",
        async: false,
        cache: false,
        contentType: "application/json; charset=utf-8",
        crossDomain: true,
        //url: "http://10.1.128.107/JsonDohaBackToTemplate/getProjectIDByMAC.svc/media/?projectid=1",
        url: "http://fantasy.premierleague.com/web/api/elements/415/?_=1357337284504", 
        success: function(data) {
          $("body").append(JSON.stringify(data));
        }, 
        error: function(jqXHR, textStatus, errorThrown) {
          alert(jqXHR.status);
        },
      dataType: "jsonp"
    });
  });
  </script>
  </head>

  <body>
  </body>
</html>
4

2 回答 2

1

Javascript不允许跨域加载资源。您需要查看跨域资源共享 (cors)。看看这些问题:

使用 jQuery 进行跨域 ajax JSONP 请求

jQuery AJAX 跨域

当然还有维基百科:

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

于 2013-08-14T09:06:18.287 回答
0

从您的调用中删除以下内容:async、cache、crossDomain、contentType 和 error。这些都不需要进行跨域调用,但可能是它不适合你的原因,因为看起来你有一个通常的调用。例如,跨域永远不会调用错误处理程序

这是您至少需要的:

$.ajax({
                        url: '',
                        success: function (data, textStatus, jqXHR) {     
                        },
                        dataType: 'jsonp'
                    });

更新:既然你得到的是 XML,而不是 jsonp,那么你只有 2 个选择:

1)如果您有权访问服务器,请在您的响应中添加以下标头:

name="Access-Control-Allow-Origin" value="*"
 name="Access-Control-Allow-Headers" value="Content-Type"

2)使用服务器端代理

于 2013-08-14T09:15:50.983 回答