2012-05-17 83 views
0

对于我的选择框切换,我需要预先构建一个选择选项值的JavaScript数组,通过使用php来生成负载上的js数组。我直到现在通过创建一个对象并将其添加到一个数组中,但现在我需要其中一个对象的属性是一个数组。我很近(对象的clientForm属性将返回一个csv列表,如果我document.write它),但我不认为它是一个数组,因为我无法访问length属性和以前的document.write不输出阵列。任何人都可以发现我做错了什么或建议一种替代方法吗?创建一个客户端阵列

这里是一个输出的Javascript数组的PHP(我已经建立了系统的CodeIgniter):

echo '<script type="text/javascript">'; 
      $array = 'var companies = new Array();'; 
$i = 0;foreach($clientList as $client) : 
       $array .= 'arrayItem'.$i.' = {clientNo:"'.$client->client_id.'", clientCompany:"'.$client->client_company_name.'", clientRef:"'.$client->client_ref_no.'", clientForms: Array('; 
       if($client->client_forms != "") 
       { 

        $a = 0; foreach($client->client_forms as $form) : 
         $array .= $form.", "; 
        ++$a; endforeach; 

       } 
       $array = substr($array, 0, -2); 
       $array .= ')};'; 
       $array .= 'companies['.$i.'] = arrayItem'.$i.'; '; 
++$i; endforeach; 
      echo $array; 
      echo '</script>'; 

这里是电流输出:

<script type="text/javascript"> 
    var companies = new Array(); 
    arrayItem0 = {clientNo:"1", clientCompany:"Test1", clientRef:"UG123HS", clientForms: Array(1, 15)}; 
    companies[0] = arrayItem0; 

    arrayItem1 = {clientNo:"2", clientCompany:"Test2", clientRef:"UF321HS", clientForms: Array(17)}; 
    companies[1] = arrayItem1; 
</script> 

如果你想看看,这里是jsfiddle上的完整输出代码(jsfiddle似乎无法让我的onclicks工作,但他们在实际的网页上)。

谢谢!

+1

创建通常的PHP数组,然后json_encode它。我认为这会容易得多。 –

+0

'json_encode'ing是最好的解决方案,因为它似乎... ...为它 –

回答

1

要创建一个数组,你使用这个语法的更好:clientForms: [1,15]

,否则别忘记加上newclientForms: new Array(1,15)

1

你的代码看起来不是太离谱,由于jsFiddle工作不太好,很难说清楚。但我注意到一件事。

如果你有list.options[i+1]=new Option(companies[i].clientCompany, companies[i].clientRef, false, false); //Add the first option in你应该有list.options[cnt+1]=new Option(companies[i].clientCompany, companies[i].clientRef, false, false); //Add the first option in

通知我改变了第一icnti是单步穿越的计数器,cnt实际上是您的选择计数器。如果您的实际页面没有为每个数组项目生成结果,那么您可能很可能会留下空白选项。

编辑:

这是在功能replaceCompanySelect。

0

感谢@mashington和@ParthThakkar的回答,我并不知道PHP中的json_encode()和javascript中的JSON.parse()如何一起工作。这里是我的新的PHP代码:

echo '<script type="text/javascript">'; 
    echo "var companies = JSON.parse('".json_encode($clientList)."');"; 
echo '</script>';