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

时间:2013-06-19 23:48:32

标签: javascript ajax json

我正在尝试从URL中使用AJAX获取信息。此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");
});

3 个答案:

答案 0 :(得分:2)

我建议使用这样的东西:

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

请注意jsonp超过json

的用法

答案 1 :(得分:0)

尝试使用getJSON()方法,如果您只想回复JSON响应。

.get,。load,.getJSON都只是在下面使用.ajax方法的扩展,如果你无法使扩展方法正常工作,有时候有助于直接使用.ajax()

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

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

注意显式使用dataType:“json”。

由于这看起来像是跨域调用,因此如果您的端点支持,则需要使用jsonp (JSON with padding)CORS (Cross-origin resource sharing)之类的内容。如果您的端点支持jsonp,您可以设置dataType:“jsonp”,但是服务器需要明确支持它,请参阅this post以获取有关jsonp的更多详细信息。

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

答案 2 :(得分:0)

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