使用jQuery JSON时提醒200

时间:2013-08-14 08:58:44

标签: jquery ajax json

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

<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>

2 个答案:

答案 0 :(得分:1)

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

Make cross-domain ajax JSONP request with jQuery

jQuery AJAX cross domain

当然还有维基百科:

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

答案 1 :(得分:0)

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

以下是您的最低要求:

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

更新:由于您获得的是XML而不是jsonp,因此您只有两个选择:

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

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

2)使用服务器端代理