2

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");
});
4

3 に答える 3

3

次のようなものを使用することをお勧めします。

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

jsonpoverの使い方に注意json

于 2013-06-19T23:53:28.947 に答える
1

json を 3 番目のパラメーターとして追加するだけで、コールバックに渡されるデータは、受信した 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
});

dataType: "json" の明示的な使用に注意してください。

これはクロスドメイン呼び出しのように見えるため、エンドポイントがサポートしている場合は、jsonp (パディング付きの JSON) またはCORS (クロスオリジン リソース共有)などを使用する必要があります。エンドポイントで jsonp がサポートされている場合は、dataType: "jsonp" を設定できますが、サーバーで明示的にサポートされている必要があります。jsonp の詳細については、この投稿を参照してください。

注:これが機能するには、サーバー APIがjsonp または CORS をサポートしている必要があります。

于 2013-06-19T23:51:28.303 に答える