2016-06-07 117 views
0

我想从这个URL加载数据:http://gateway.fpts.com.vn/monitor/realtime/?s=aaa使用Javascript。如何从JavaScript中的链接URL获取数据请求?

在我的浏览此网址返回数据,如下图所示:

Screenshot - data as shown in a web browser

这里是我试过的代码:

<html> 
    <head> 
     <title>The jQuery Example</title> 
     <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    </head> 
    <body> 
     <div id= "stage"></div> 
     <script type = "text/javascript" language = "javascript"> 
     var url = "http://gateway.fpts.com.vn/monitor/realtime/?s=aaa" 
     $.ajax({ 
      url: url, 
      cache: false, 
      method: "GET", 
     }) 
      .done(function(html) { 
      $("#stage").append(html); 
      }); 
     </script> 
    </body> 
</html> 

但我收到此错误:

XMLHttpRequest cannot load http://gateway.fpts.com.vn/monitor/realtime/?s=aaa&_=1465298988417 . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

+2

阅读关于jQuery.ajax()这里http://api.jquery.com/jquery.ajax/。 – void

回答

1

你正在一个cross-origin http request因为你是从一个域http://gateway.fpts.com.vn这是不同的形式,在问题出你的HTML文件的请求数据,说它http://www.requesting-server.com

要允许cross-origin resource sharing,你应该设置以下头在请求的服务器上http://gateway.fpts.com.vn

要允许来自任何域的请求,使用*作为通配符(不太安全):

Access-Control-Allow-Origin: * 

要允许来自特定域的请求:

Access-Control-Allow-Origin: http://www.requesting-server.com 

你可以还检查this帖子,它解决了同样的问题。

+0

我试过了,但是失败了:( –

+0

现在是什么错误信息?是否一样? –

+0

我试过了:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 错误25未捕获的ReferenceError:处理程序未定义 –

0

你必须从下面的链接导入jQuery库来使用它码。 https://jquery.com/download/

$.get("http://gateway.fpts.com.vn/monitor/realtime/?s=aaa", function(data) { 
    console.log(data); 
}); 
+0

嗨@Dhval谢谢你的回答!但有一个错误:“XMLHttpRequest无法加载http://gateway.fpts.com.vn/monitor/realtime/?s=aaa&_=1465298988417。请求的资源上没有”Access-Control-Allow-Origin“标头。因此不允许原产地'null'访问。“ –

+0

请优先选择No'Access-Control-Allow-Origin'http://stackoverflow.com/questions/28547288/no-access-control-allow-origin-header-is-present-on-the-requested-资源错误 –

0

你可以让一个Ajax请求的,然后获取数据,是这样的:

$.ajax({ 
    url: "http://gateway.fpts.com.vn/monitor/realtime/?s=aaa", 
}).done(function(data) { 
    $("body").html(data); 
}); 

确保,如果你用它来包括jQuery的。

+0

Hi @BjørnNyborg谢谢你的回答!但是有一个错误:“XMLHttpRequest无法加载http://gateway.fpts.com.vn/monitor/realtime/?s=aaa&_=1465298988417。请求的资源上没有“Access-Control-Allow-Origin”标题。原因'null'因此是不允许访问的。“ –

+0

这是因为它的一个跨域请求。 尝试添加dataType:'jsonp', –

0

由于您的数据是JSON表单,因此您可以使用$.getJson()的简写。下载jQuery library并包含在每个脚本的顶部。然后将下面的代码片段放置在jQuery库下面的单独脚本中。

(function($){ 
    $(function(){ 
     $.getJson("http://gateway.fpts.com.vn/monitor/realtime/?s=aaa", function(data) {   
      console.log(data); 
      // do something with data....   
     }); 
    }); 
})(jQuery || window.jQuery); 
+0

Hi @ Rohit416感谢您的回答! 但有错误:Uncaught TypeError:$。 getJson不是函数 –

+0

你有没有在上面加上'jQuery'? – Rohit416

+0

我包含在上面 –

1

除了@Orions评论(https://stackoverflow.com/a/37678620/633781),您需要提供以下您的请求头到服务器,使其工作:

Origin: <your domain, e.g. http://example.com> 

至于我记得,jQuery将自动做这行您。不过,您可以在浏览器的开发工具中检查请求标头,确保它确实如此。你可以添加你自己的头文件到使用jQuery进行的请求,虽然(https://api.jquery.com/jquery.ajax/

+0

你说得对“jQuery自动为你做这件事” –