0

jQuery JSON応答に問題があります。情報を渡し、ヘッダーを取得していますが、HTMLを取得できません。私もJSONPでこれを解決しようとしていますが、それでも結果はありません。

<script type='text/javascript'>
    $(document).ready(function(){
        $("input.senddata").click(function() {
            var ipForm = $('input[name="ip_submit"]').val();
            var gameForm = $( 'select[name="game_submit"]' ).val()
            $.getJSON("http://gamepwn.net/serversdotee/add-server.php",
              {
                ip: ipForm,
                game: gameForm
              },
              function(data) {
                $('#result').html(data);
              });
        });
    });
</script>

phpファイル:

$data = array('items'=>array('serverip'=>'localhost', 'game'=>'cs','protocol'=>'48'));
echo json_encode($data);

受信しているヘッダー:

   Response Headers
Cache-Control   no-cache, must-revalidate
Connection  Keep-Alive
Content-Type    application/json
Date    Tue, 26 Jun 2012 21:49:01 GMT
Expires Mon, 26 Jul 1997 05:00:00 GMT
Keep-Alive  timeout=5, max=100
Server  Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_perl/2.0.4 Perl/v5.8.8
Transfer-Encoding   chunked
X-Powered-By    PHP/5.3.6

   Request Headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language et,et-ee;q=0.8,en-us;q=0.5,en;q=0.3
Connection  keep-alive
Host    gamepwn.net
Origin  http://servers.kdfx.eu
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0 FirePHP/0.7.1
x-insight   activate
4

1 に答える 1

1

次のようなコンテンツを含むtest.phpファイルがある場合

  <?php
$data = array('items'=>array('serverip'=>'localhost', 'game'=>'cs','protocol'=>'48'));
echo $data;
?>

それから

$ php -f test.php

出力を生成します:

Array

代わりに、JSONでエンコードされたデータを配信したいと思います。

<?php
$data = array('items'=>array('serverip'=>'localhost', 'game'=>'cs','protocol'=>'48'));
echo json_encode($data);
?>

json_encodeを使用すると、次の出力が提供されます。

{"items":{"serverip":"localhost","game":"cs","protocol":"48"}}

最初に文字列を作成する必要がある場合、JavaScriptはオブジェクトをjQueries.html関数に渡そうとします。これを達成する簡単な方法は、次のようなコードを使用することです。

<script type='text/javascript'>
    $(document).ready(function(){
    var pprint = function (data){
        var print = "{";
        $.each(data, function(key, element){
            if($.isPlainObject(element))
                element = pprint(element);
            print = print + '<br/>' + key + ': ' + element;
        });
        return print + "}";
    };
    console.log("test");
    $.getJSON("test.php",{}, function(data){
        console.log(data);
        $("#foo").html(pprint(data));
        console.log("done.");
    });
    });
</script>

ここで、pprint関数は、プレーンオブジェクトを文字列に単純に変換します。この回答から$.eachを使用するというアイデアを思いつきましたが、https://j11y.io/javascript/prettyprint-for-javascript/のようなより高度なアプローチもあります。


$ .getJSONの問題を確認するには、$。ajaxを使用できます。

$.ajax({
  url: "test.php",
  dataType: 'json',
  data: {},
  success: function(data){
        console.log(data);
        $("#foo").html(pprint(data));
        console.log("done.");
    }),
  error: function(jqXHR, textStatus, errorThrown){
    console.log(textStatus);
    console.log(errorThrown);
  }
});

これはhttps://api.jquery.com/jQuery.ajax/で文書化されています。うまくいけば、これはあなたが経験している問題についてもっと教えてくれるでしょう。

于 2012-06-26T22:03:37.483 に答える