如何为从数据库导入的多个数组使用循环

时间:2013-12-19 07:25:55

标签: php jquery mysql

在服务器端,我从MySql提供表数据,然后将其与json_encode一起发送给JQuery:

<?php
include 'DB.php';

$result20 = mysql_query("SELECT * FROM Gallery WHERE Section = 'Chosen' AND ID = 19");          
$array20 = mysql_fetch_row($result20);                          

$result19 = mysql_query("SELECT * FROM Gallery WHERE Section = 'Chosen' AND ID = 19");          
$array19 = mysql_fetch_row($result19);  

$data = array();
$data['Div20'] = $array20;
$data['Div19'] = $array19;
echo json_encode($data);
?>

json_encode导出此数组:{“Div20”:[“Image20”,“20.jpg”],“Div19”:[“Image19”,“19.jpg”]}

但是,在客户端我需要使用循环来使用事件中的所有数组。当我使用它时,它不适用于多个数组,怎么做?

$(function() {
  $.get('data.php' ,function(response)
  {
     var data = jQuery.parseJSON(response);
     var array;
     for(array in data)
     {
       var ImageID = data.array[0];
       var ImageSrc = data.array[1];

       $('#'+ImageID ).click(function(){
            //some codes
       })
     }
   })
})

5 个答案:

答案 0 :(得分:1)

如果您将#添加到imageid

,它就会有效
$('#'+ImageID ).click(function(){
    //some codes
});

我为你尝试了一些代码,

var json={"Div20":["Image20","20.jpg"],"Div19":["Image19","19.jpg"]};
for(div in json){
    ImageID=json[div][0];
    ImageSRC=json[div][1];
    $('#'+ImageID)
           .attr('src',ImageSRC)
           .click(function(){
               alert(this.src);            
           });
}

Demo

答案 1 :(得分:1)

试试这个

$(function() {
  $.get('data.php' ,function(response) {
     var data = jQuery.parseJSON(response);
     $.each( data, function( key, value) {        
       var ImageID  = value[0];
       var ImageSrc = value[1];

       $("#"+ImageID ).click(function(){
            //some codes
       })     
   })
})

答案 2 :(得分:0)

.array替换为for循环中的[array]

 for(array in data)
 {
   var ImageID = data[array][0];
   var ImageSrc = data[array][1];
 }

答案 3 :(得分:0)

“array”不是json对象的属性,它只是for ... in循环的参数。因此,您必须将其用作动态值。此外,您错过了使用#来正确定位元素ID。

var data = {"Div20":["Image20","20.jpg"],"Div19":["Image19","19.jpg"]};
for(array in data)
{
    var ImageID = "#"+data[array][0];
    var ImageSrc = data[array][1];
    $(ImageID).on("click",function(){
        //some codes
    });
};

避免使用上面推荐的$ .each()循环,jQuery循环通常比本机循环慢。

答案 4 :(得分:0)

试试这个..

$(function() {

$。get('data.php',函数(响应)   {

var data = jQuery.parseJSON(response);
 $.each(data,function(k, v){
       var ImageID = v[0]; 
       var ImageSrc = v[1];
  $('#'+ImageID ).click(function(){
     //some codes`enter code here`
     })

}) })