2012-06-09 2 views
6

어떻게 PHP의 데이터를 아약스로 전달할 수 있습니까?php에서 ajax로 데이터를 다시 전달

PHP

$query = 'SELECT * FROM picture order by rand() LIMIT 10'; 
$result = mysql_query($query); 

while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { 

$url[]=$rec['pic_location']; 
$name[]=$rec['name']; 
$age[]=$rec['age']; 
$gender[]=$rec['gender']; 


} 

echo json_encode($url); 
echo json_encode($name); 
echo json_encode($age); 
echo json_encode($gender); 

아약스

$(".goButton").click(function() { 
    var dir = $(this).attr("id"); 
    var imId = $(".theImage").attr("id"); 

    $.ajax({ 
     url: "viewnew.php", 
     dataType: "json", 
     data: { 
     current_image: imId, 
     direction : dir 
     }, 
     success: function(ret){ 
      console.log(ret); 
      var arr = ret; 
      alert("first image url: " + arr[0][0] + ", second image url: " + arr[0][1]); // This code isnt working 
      alert("first image Name: " + arr[1][0] + ", second image name: " + arr[1][1]); 
      $(".theImage").attr("src", arr[0]); 
      if ('prev' == dir) { 
      imId ++; 
     } else { 
      imId --; 
     } 
     $("#theImage").attr("id", imId); 
     } 
    }); 

}); 
}); 
</script> 

내 질문은 내가 여기에 값을 표시 할 수있는 방법인가? 알림 메시지에서 "정의되지 않음"을 표시합니까?

답변

10

이 줄을 따라 무엇인가 할 수 있습니다.

PHP

$query = 'SELECT * FROM picture order by rand() LIMIT 10'; 
$res = mysql_query($query); 

$pictures = array(); 
while ($row = mysql_fetch_array($res)) { 
    $picture = array(
    "pic_location" => $row['pic_location'], 
    "name"   => $row['name'], 
    "age"   => $row['age'], 
    "gender"  => $row['gender'] 
); 
    $pictures[] = $picture; 
} 

echo json_encode($pictures); 

JS에게

... 
$.ajax({ 
    ... 
    dataType: "json", 
    ... 
    success: function(pictures){ 
    $.each(pictures, function(idx, picture){ 
     // picture.pic_location 
     // picture.name 
     // picture.age 
     // picture.gender 
    }); 
    } 
}); 
... 
+0

고맙습니다. :)'echo json_encode ($ picture);'는 데이터베이스에서 첫 번째 행 또는 모든 열 10 개를 반환하겠습니까? 방금 ​​시도했는데, 1의 행이 표시됩니다. – Yahoo

+0

Got iT !! 사진이 아니라 그림을 되풀이해야했다 :) 감사합니다. 당신의 대답은 완벽했습니다. – Yahoo

+0

예, 거기에 오타가있었습니다. – Alexander

2

당신은 AJAX 응답을 여러 echo 문을 넣을 수 없습니다

echo json_encode($url); 
echo json_encode($name); 
echo json_encode($age); 
echo json_encode($gender); 

당신의 배열을 가입하고 하나의 응답 보내

$arr = $url + $name + $age + $gender; 
echo json_encode($arr); 
2

당신은 쉽게 하나의 배열을 사용하여이 작업을 수행 할 수 있습니다 :

$pics = array(); 

while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $pics[$rec['id']]['url'] = $rec['pic_location']; 
    $pics[$rec['id']]['name']=$rec['name']; 
    $pics[$rec['id']]['age']=$rec['age']; 
    $pics[$rec['id']]['gender']=$rec['gender']; 
} 

echo json_encode($pics); 
+0

나는 오직 하나의'$ pic' : – Alexander

+0

@srinivasan 볼 수 있습니다 - 감사합니다,하지만 난 다시 데이터베이스의 전체 10 개 행을 보내 싶어? 이게 1 행을 보낼 것 같아요? 그게 아니야? – Yahoo

+0

@Alexander와 Adi Mathur, 지금 오류를 수정했습니다. 업데이트 된 코드를 참조하십시오. –

관련 문제