2

我正在尝试使用 AJAX 从 URL 获取信息。这个 URL 将返回一个 JSON 响应,但我在让它工作时遇到了很多麻烦。我对同时使用 AJAX 和 JSON 还很陌生,所以我不太确定自己做错了什么。我没有收到任何输出。这是我到目前为止所拥有的:

HTML:

<!doctype html>
<html>
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content - Type">
    <meta content ="utf-8" http-equiv="encoding">

    <title>My Javascript Practice</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <noscript>JavaScript Must Be Enabled</noscript>
</head>
<body>
    <div id="pub">Parent Div</div>

    <script type="text/javascript" src="getList.js"></script>
</body>
</html>

JavaScript:

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

$.get(myUrl, function(data){
    $("#pub").html(data);
    alert("load was performed");
});
4

3 回答 3

3

我可以建议使用这样的东西:

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

jsonp注意over的用法json

于 2013-06-19T23:53:28.947 回答
1

只需添加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;
?>

并在你的 js 文件中调用它

var teamId = 883455;
var myUrl = "path/to/api.php?teamId="+teamId;

$.get(myUrl, function(data){
    //data here will be object, should not used directly
   console.log(data);
}, 'json');
于 2013-06-19T23:55:33.040 回答
0

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

.get、.load、.getJSON 都只是在下面使用 .ajax 方法的扩展,如果您无法使扩展方法正常工作,有时直接使用.ajax()会有所帮助

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

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

注意数据类型的显式使用:“json”。

由于这看起来像一个跨域调用,如果您的端点支持,您将需要使用jsonp(带填充的 JSON)CORS(跨域资源共享)之类的东西。如果您的端点支持 jsonp,您可以设置 dataType: "jsonp" 但它需要得到服务器的明确支持,有关 jsonp 的更多详细信息,请参阅这篇文章。

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

于 2013-06-19T23:51:28.303 回答