Javascript 如何获取jQuery.get以返回JSON数据?

Javascript 如何获取jQuery.get以返回JSON数据?,javascript,ajax,json,Javascript,Ajax,Json,我正在尝试使用AJAX从URL获取信息。这个URL将返回一个JSON响应,但要让它正常工作,我遇到了很多麻烦。我对使用AJAX和JSON都相当陌生,所以我不太确定我做错了什么。我没有收到任何输出。以下是我目前掌握的情况: HTML: 如果您只对返回JSON响应感兴趣,请尝试使用该方法 .get、.load、.getJSON都只是使用下面的.ajax方法的扩展,如果扩展方法不能正常工作,那么直接使用它有时会有所帮助 本质上,getJSON()方法就是这样的: $.ajax({ dataType

我正在尝试使用AJAX从URL获取信息。这个URL将返回一个JSON响应,但要让它正常工作,我遇到了很多麻烦。我对使用AJAX和JSON都相当陌生,所以我不太确定我做错了什么。我没有收到任何输出。以下是我目前掌握的情况:

HTML:

如果您只对返回JSON响应感兴趣,请尝试使用该方法

.get、.load、.getJSON都只是使用下面的.ajax方法的扩展,如果扩展方法不能正常工作,那么直接使用它有时会有所帮助

本质上,getJSON()方法就是这样的:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});
注意数据类型的显式使用:“json”

因为这看起来像是一个跨域调用,所以如果端点支持它,您将需要使用类似或的东西。如果端点支持jsonp,则可以设置数据类型:“jsonp”,但它需要服务器明确支持。有关jsonp的更多详细信息,请参阅文章

注意:您的服务器API必须支持jsonp或CORS才能工作。

如果您只想返回JSON响应,请尝试使用该方法

.get、.load、.getJSON都只是使用下面的.ajax方法的扩展,如果扩展方法不能正常工作,那么直接使用它有时会有所帮助

本质上,getJSON()方法就是这样的:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});
注意数据类型的显式使用:“json”

因为这看起来像是一个跨域调用,所以如果端点支持它,您将需要使用类似或的东西。如果端点支持jsonp,则可以设置数据类型:“jsonp”,但它需要服务器明确支持。有关jsonp的更多详细信息,请参阅文章


注意:您的服务器API必须支持jsonp或CORS才能正常工作。

我可以建议您使用类似以下内容:

$.ajax({
  type: 'GET',
  url: myURL,
  data: yourDAta,
  dataType: 'jsonp',
  success: function(jsonData) {
    alert(jsonData);
  },
  error: function() {
    alert('Error loading ');
  }
});

请注意
jsonp
json

上的用法。我可以建议您使用以下内容:

$.ajax({
  type: 'GET',
  url: myURL,
  data: yourDAta,
  dataType: 'jsonp',
  success: function(jsonData) {
    alert(jsonData);
  },
  error: function() {
    alert('Error loading ');
  }
});

注意
jsonp
over
json

只需添加json作为第三个参数,传递到回调的数据将是接收到的json字符串的对象表示形式

这应该行得通

var teamId = 883455;
var myUrl = "https://apps-internal.attributor.com/guardianapi/service/csadminservice/csteams/" + teamId + "?view=PUBLISHERS_FOR_TEAM";

$.get(myUrl, function(data){
    //data here will be object, should not used directly
    $("#pub").html(data);
    alert("load was performed"); 
}, 'json');
如果您在不同的域中,您可以设置一个服务器端脚本来获取数据,比如说它是名为api.php的php文件

<?php
    $teamId = $_GET['teamId'];

    //php.ini should allow url fopen
    $response = file_get_contents("https://apps-internal.attributor.com/guardianapi/service/csadminservice/csteams/". $teamId ."?view=PUBLISHERS_FOR_TEAM");
    echo $response;
?>

只需添加json作为第三个参数,传递给回调的数据将是接收到的json字符串的对象表示

这应该行得通

var teamId = 883455;
var myUrl = "https://apps-internal.attributor.com/guardianapi/service/csadminservice/csteams/" + teamId + "?view=PUBLISHERS_FOR_TEAM";

$.get(myUrl, function(data){
    //data here will be object, should not used directly
    $("#pub").html(data);
    alert("load was performed"); 
}, 'json');
如果您在不同的域中,您可以设置一个服务器端脚本来获取数据,比如说它是名为api.php的php文件

<?php
    $teamId = $_GET['teamId'];

    //php.ini should allow url fopen
    $response = file_get_contents("https://apps-internal.attributor.com/guardianapi/service/csadminservice/csteams/". $teamId ."?view=PUBLISHERS_FOR_TEAM");
    echo $response;
?>

跨域请求需要设置CORS。我真的需要JSON吗?那你为什么要把它放在沙发里?JSON不是HTML。另外,apps-internal.attributer.com是您自己的域名吗?你的当前页面也是通过https访问的吗?我真的希望通过该api返回的所有数据都是演示或非敏感的。。。否则它将完全开放,返回所有团队、发布者和成员的列表…:(请确保生产数据不会在这样的公共网站上公开。正如穆萨所说,它需要CORS设置,或者它应该返回脚本而不是json。同源策略跨域请求需要CORS设置。我知道它真的是json吗?那么你为什么要尝试将它放在div中?json不是HTML。另外,apps-internal.attributer.com是你自己的吗域?您当前的页面是否也通过https访问?我真的希望通过该api返回的所有数据都是演示数据或非敏感数据…否则它将完全打开,返回所有团队、发布者和成员的列表…:(请确保生产数据不会出现在这样的公共站点上。正如穆萨所说,它需要CORS设置,或者它应该返回脚本而不是json。同源策略我不认为这会有什么帮助。如果他在同一个域中,我认为它应该工作,如jquery文档中所述,如果不指定数据类型,它就不能工作,我看不到h。)如果您指定一个数据类型,它将如何工作。我不认为这会有什么帮助如果他在同一个域中,我认为它应该工作,正如jquery文档中所述,如果不指定一个数据类型它就不工作,我看不出如果您指定一个数据类型它将如何工作。