jquery を使用して JS アプリを作成します。JSON を使用してデータをスクリプトに取り込むのに本当に問題があります。
次のデータ セットを .php スクリプトで作成します。
<?php
$golfer_id=45;
$score_arr[$golfer_id]["name"]="Dave Curry";
$score_arr[$golfer_id][1]=4;
$score_arr[$golfer_id][2]=3;
$score_arr[$golfer_id][3]=5;
$score_arr[$golfer_id][4]=5;
$score_arr[$golfer_id][5]=5;
$score_arr[$golfer_id][6]=5;
$score_arr[$golfer_id][7]=5;
$score_arr[$golfer_id][8]=5;
$score_arr[$golfer_id][9]=5;
$golfer_id=25;
$score_arr[$golfer_id]["name"]="John Doe";
$score_arr[$golfer_id][1]=2;
$score_arr[$golfer_id][2]=2;
$score_arr[$golfer_id][3]=1;
$score_arr[$golfer_id][4]=5;
$score_arr[$golfer_id][5]=5;
$score_arr[$golfer_id][6]=5;
$score_arr[$golfer_id][7]=5;
$score_arr[$golfer_id][8]=5;
$score_arr[$golfer_id][9]=5;
echo json_encode($score_arr);
?>
最終的に、このデータは mysql クエリから取得されます。
これにより、次が生成されます。
{"45":{"name":"Bob Test","1":4,"2":3,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5},"25":{"name":"John Doe","1":2,"2":2,"3":1,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5}}
このコードを使用しています
<?php
$hole=1;
$gid=$_REQUEST['gid'];
?>
<script type="text/javascript">
gid= <?php echo "$gid"; ?>+0;
hole = <?php echo "$hole"; ?>+0;
score_arr = new Object() ;
var total = new Array() ;
$(document).ready(function(){
// SET the intial values
$("#hole_num").text(hole);
// Get Data from db
$.getJSON("golf_be.php","", function(score_arr){
// score_arr = jQuery.parseJSON(score_arr); Tried this it didn't work
console.log(score_arr); //uncomment this for debug
}); //End json
$("#score").text(score_arr[gid][hole]); \\ This has an error
$("#golfer_name").text(score_arr[gid]["name"]);
Firebug の使用 i コンソールにこのエラーが表示されます。興味深いことに、オブジェクトはそこにあります。
TypeError: score_arr[gid] is undefined
[Break On This Error]
$("#score").text(score_arr[gid][hole]);
golf.php?gid=25 (line 94)
Object { 0={...}, 45={...}, 25={...}}
多くのことを試しましたが、何らかの理由でJSONのオブジェクトがscore_arrに正しく入っていないように見えます。ご覧のとおり、parseJson も試してみましたが、うまくいきませんでした。
いくつかの他の歴史、私は同じスクリプトで php 配列の作成から始めました。php echo を使用して、エンコードされた JSON 配列をスコア変数に直接取得すると、すべてがうまく機能しました。現在、データベースと対話するように調整しています。
どんな助けでも大歓迎です。jQuery と JS の初心者であり、この素晴らしいサイトで答えを探すのに多くの時間を費やしてきましたが、うまくいきませんでした。