2012-11-19 2 views
0

jquery를 사용하여 JS 앱 만들기. JSON을 사용하여 스크립트에 데이터를 가져 오는 데 큰 어려움이 있습니다.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 쿼리에서 가져옵니다.

이 생산 : 내가 콘솔에서이 오류가 방화범을 사용하여이 코드

<?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"]); 

을 사용하고

{"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}} 

. 흥미롭게도 그것은 대상이 있습니다.

많은 것을 시도했지만 JSON의 객체가 score_arr에 제대로 들어 가지 않는다고 생각합니다. 보시다시피 저는 운이없는 parseJson도 시도했습니다.

다른 역사에서, 나는 같은 스크립트에서 PHP 배열 생성을 시작했습니다. 그리고 PHP echo를 사용하여 인코딩 된 JSON 배열을 score var로 직접 가져 오면 모든 것이 잘 작동합니다. 이제 db와 상호 작용하도록 그것을 적용합니다.

도움이 매우 감사합니다. jQuery와 JS에 대한 초보자의 한마디로,이 위대한 사이트에서 운이없는 답을 찾기 위해 많은 시간을 보냈습니다. 다음과 같이

답변

4

당신은 당신이해서 getJSON 호출로 전달하는 함수 내에서 텍스트를 설정해야합니다

$.getJSON("golf_be.php","", function(data) { 
    $("#score").text(data[gid][hole]); 
    $("#golfer_name").text(data[gid]["name"]); 
); 

당신이해서 getJSON로 전달하는 함수는 콜백 함수이기 때문이다, 그래서 그것은 실행 얻을 것이다 PHP 페이지에서 데이터를 검색 한 후 그것은 귀하의 코드에서 기본 함수에 score_arr을 설정하지 않으므로, 데이터를 가진 score_arr이라는 로컬 범위 변수를 작성합니다.이 변수는 getJSON 호출로 전달하는 함수 내에서만 사용할 수 있습니다.

+0

흥미 롭다면, 일종의. getJSON에서 전역 score_arr을 업데이트하려면 어떻게해야합니까? 함수에서 반환하십시오. – davewhirlwind

0

zshooter, 솔루션 및 콜백 함수에 대한 약간의 덧붙임을 보내 주셔서 감사합니다. 사용자가 제안한 변경 점수 score_arr와 변경 사항 다른 사람들을 돕기 위해 작동하는 코드가 있습니다.

var score_arr ; 
var total = new Array() ; 

$(document).ready(function(){ 

// SET the intial values 
$("#hole_num").text(hole); 

// Get Data from db 
$.getJSON("golf_be.php","", function(data){ 

console.log(data); //uncomment this for debug 

$("#score").text(data[gid][hole]); 
$("#golfer_name").text(data[gid]["name"]); 
score_arr= data; 
}); //End json