如何让jQuery .get返回JSON数据

How can I get jQuery .get to return JSON data?

本文关键字:返回 JSON 数据 get jQuery      更新时间:2023-09-26

我试图从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");
});

我可以建议这样使用吗?

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

注意jsonpjson的用法

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

如果你在其他域,你可以设置服务器端脚本获取数据,比如PHP文件api。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');

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

。get。load。getjson都是下面使用。ajax方法的扩展,如果无法使用扩展方法有时直接使用。ajax()会有帮助

getJSON()方法就是这样:

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

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

由于这看起来像一个跨域调用,如果您的端点支持的话,您将需要使用jsonp(带填充的JSON)或CORS(跨域资源共享)之类的东西。如果你的终端支持jsonp,你可以设置dataType: "jsonp",但它需要被服务器显式支持,详见这篇文章。

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