2012-06-09 17 views
6

से डेटा वापस पास करना मैं फिर पंक्तियों के किसी PHP से डेटा को AJAX पर कैसे पास कर सकता हूं?php से AJAX

पीएचपी

$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

आप इन पंक्तियों के साथ कुछ कर सकते हैं।

पीएचपी

$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); 

जे एस

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

धन्यवाद :), क्या 'echo json_encode ($ चित्र);' केवल पहली पंक्ति या डेटाबेस से सभी 10 पंक्तियों को वापस कर रहे हैं? मैंने अभी कोशिश की, यह सिर्फ 1 की पंक्ति को प्रतिबिंबित कर रहा है? – Yahoo

+0

आईटी मिला !! चित्रों को चित्रित करने के लिए $ चित्रों को प्रतिबिंबित करना था :) धन्यवाद, आपका उत्तर सही था – 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

@ एलेक्सेंडर और आदि माथुर, मैंने अब त्रुटियों को सही किया है। कृपया अद्यतन कोड देखें। –