【问题标题】:Get json data from server从服务器获取json数据
【发布时间】:2017-11-20 11:04:37
【问题描述】:

我正在尝试通过向服务器发送 get 请求来从服务器获取 json 整数数组。当我运行下面的代码时,服务器会收到请求。如何打印服务器发回的数据?第二个 alert() 不显示。

$(document).ready(function(){
alert("READyS");

$("button").click(function(){
  $.getJSON("http://localhost:8080/Data/", function (data) {
      alert("data recieved");
  });
});

});

【问题讨论】:

  • 但在localhost:8080/Data ... /Data/ 似乎是一个目录而不是json文件
  • 检查开发者工具中的网络选项卡,看看为什么请求没有收到响应。
  • @FreemanLambda= 我得到这个请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问
  • 然后您需要配置您的服务器以允许来自您的客户端域的 CORS 请求。 Google:“如何为 启用 CORS”

标签: javascript jquery html json http


【解决方案1】:

由于你使用的是 jQuery,你可以使用这个:

$("button").click(function(){
   $.get( "http://localhost:8080/Data/" )
     .done(function( data ) {
      alert( "Data Loaded: " + data );
   });
});

Obs.:请详细说明按钮是什么。

如果还是不行,把你的html粘贴到这里

【讨论】:

  • 这正是 OP 正在做的事情。请阅读有关问题的 cmets,您会看到 OP 根本没有收到响应,因为他们的服务器无法处理 CORS 请求。
【解决方案2】:

您可以使用回调函数传递给 AJAX 请求的成功状态。这样,您就可以使用请求的异步性质,它不会在等待请求的数据时阻塞浏览器调用堆栈,并且您将结果打印到页面上。这只是一个 p 元素,其中包含所有请求的信息,因此如果它只是一个字符串,它将起作用。如果它是一个对象数组或类似的东西,那么您可以在其中创建一个带有printData 函数的map 函数来遍历所有下载的对象。

function printData(passedData) {
  jQuery('<p/>', {
    id: 'foo',
    text: passedData
  }).appendTo('body');
}

function testAjax(handleData) {
  $.ajax({
    url:"http://localhost:8080/Data/",  
    success:function(data) {
      handleData(data); 
    }
  });
}

testAjax(printData);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2014-05-20
    相关资源
    最近更新 更多