2012-05-25 66 views
3

我得到了一个表单的页面来填充它的用户信息。我以前的用户数据存储在php数组中。通过下拉列表,用户可以使用我存储的数据填写表单。传递php数组到jquery函数

我所拥有的是一个jquery函数,它会在值更改时触发,并且该函数内部我希望使用存储的数据更新表单值(在我的php数组中)。

问题是,我不知道如何将我的PHP数组传递给jquery函数,任何想法?

这是我如何填充数组:

$contador_acompanantes = 0; 

foreach ($acompanantes->Persona as $acomp) 
{ 
    $numero = $acomp->Numero; 
    $apellidos = $acomp->Apellidos; 
    $nombre = $acomp->Nombre; 

    $ACOMPANANTES[$contador_acompanantes] = $ficha_acomp; 
    $contador_acompanantes++; 
} 

了我的选择对象:

<select name="acompanante_anterior" id="acompanante_anterior"> 
<option value="1" selected>Acompañante</option> 
<option value="2">acompanante1</option> 
<option value="2">acompanante2</option> 
</select> 

,这是我对jQuery函数的代码(这是在同一个PHP页面)

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$('#acompanante_anterior').on('change', function() 
    { 

    }); 
}); 
</script> 

回答

16
var arrayFromPHP = <?php echo json_encode($phpArray); ?>; 
$.each(arrayFromPHP, function (i, elem) { 
    // do your stuff 
}); 
+0

我正在testig这个代码用一个简单的数组,并试图得到一个警报( '')在我的字符串中的每个值我没有得到任何 –

+0

谢谢,finaly改变了阵列结构 –

+0

谢谢..这真的帮助 – Charmie

0

试试这个..

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
    $('#acompanante_anterior').on('change', function() 
     { 
      my_array = new Array(); 

      <?php foreach($array as $key->val)?> 
       my_array['<?php echo $key?>'] = '<?php echo $val;?>'; 
      <?php endif; ?> 

     }); 
    }); 
    </script> 
1

你可能会希望使用json_encode,嵌入到页面中的JSON,并与JSON-js解析它。使用此方法,您应该注意转义</script>,引号和其他实体。此外,标准的安全问题也适用。演示在这里:http://jsfiddle.net/imsky/fjEgj/

HTML:

<select><option>---</option><option>Hello</option><option>World</option></select> 

<script type="text/javascript"> 
    var encoded_json_from_php = '{"Hello":[1,2,3], "World":[4,5,6]}'; 
    var json = JSON.parse(encoded_json_from_php); 
</script> 

的jQuery:

$(function() { 
    $("select").change(function() { 
     $(this).unbind("change"); 
     var val = json[$(this).val()]; 
     var select = $(this); 
     $(this).empty(); 
     $.each(val, function(i, v) { 
      select.append("<option>" + v + "</option>"); 
     }); 
    }); 
});