0

このスクリプトを使用してブラウザの URL から JSON データを表示できませんが、エラーの原因が見つかりません。

URL (http://www.entertainmentcocktail.com/cp/index.php) には、有効な JSON データであると私が理解しているものが含まれていますが、このコードを使用しても何も返されません:

    <script type="text/javascript" src="cordova-2.3.0.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <script type="text/javascript" src="jquery/jquery.min.js"></script>
        <script type="text/javascript">
                $(document).ready(function(){
                    var output = $('#output');

                    $.ajax({
                        url: 'http://www.entertainmentcocktail.com/cp/index.php',
                        dataType: 'jsonp',
                        jsonp: 'jsoncallback',
                        timeout: 5000,
                        success: function(data, status){
                            $.each(data, function(i,item){
                                var name = '<h1>'+item.location+'</h1>'
                                + '<p>'+item.id+'</br>';

                                output.append(name);
                            });
                        },
                        error: function(){
                            output.text('There was an error loading the data.');
                        }
                    });
                });
                </script>

編集: JSON データを含むターゲット ページは、次のコードを使用してデータベースから情報を生成します。

<?php
header('Content-type: application/json');

$server = "SERVER";
$username = "USER";
$password = "PASS";
$database = "DB";

$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);

$sql = "SELECT id, name, location FROM table_name ORDER BY id";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());

$records = array();

while($row = mysql_fetch_assoc($result)) {
    $records[] = $row;
}

mysql_close($con);

echo $_GET['jsoncallback'] . json_encode($records);
?>
4

1 に答える 1

0

このコードを同じドメイン (www.entertainmentcocktail.com) から実行していますか? そうでない場合は、XSRF の問題が発生している可能性があります。

テストに使用しているブラウザは何ですか? Chrome では、右クリックして [要素の検査] に移動すると、Java スクリプト エラーがある場合、右下隅に小さな赤いマークが表示されます。詳細については、こちらを参照してください。

http://cl.ly/image/261T3T360M34 - 右下隅のエラーのスクリーン ショット。

json 文字列をどのように生成していますか? 組み込みの PHP 関数を使用するのが理想的です: http://php.net/manual/en/function.json-encode.php

アップデート:

あなたのコメントから、あなたの問題はスクリプトの場合の順序です。次のように変更します。

<script type="text/javascript" src="cordova-2.3.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="jquery/jquery.min.js"></script>
    <script type="text/javascript">
            $(document).ready(function(){
                var output = $('#output');

                $.ajax({
                    url: 'http://www.entertainmentcocktail.com/cp/index.php',
                    dataType: 'jsonp',
                    jsonp: 'jsoncallback',
                    timeout: 5000,
                    success: function(data, status){
                        $.each(data, function(i,item){
                            var name = '<h1>'+item.location+'</h1>'
                            + '<p>'+item.id+'</br>';

                            output.append(name);
                        });
                    },
                    error: function(){
                        output.text('There was an error loading the data.');
                    }
                });
            });
            </script>
于 2013-01-22T17:15:23.613 に答える