0

对于我的选择框切换,我需要通过使用 php 在加载时生成一个 js 数组来为选择选项值预先构建一个 javascript 数组。到目前为止,我通过创建一个对象并将其添加到一个数组中来做到这一点,但现在我需要一个对象的属性是一个年份数组。我很接近(如果我 document.write 对象的 clientForm 属性将返回一个 csv 列表),但我不认为它是一个数组,因为我无法访问 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 工作,但它们在实际网页上可以)。

谢谢!

4

3 回答 3

1

要创建数组,最好使用以下语法:clientForms: [1,15]

否则不要忘记添加newclientForms: new Array(1,15)

于 2012-05-17T16:12:45.990 回答
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

请注意,我将第一个更改icnt. i是遍历数组的计数器,cnt实际上是您的选项计数器。如果您的实际页面没有为每个数组项生成结果,那么您很可能会留下空白选项。

编辑:

这是在函数replaceCompanySelect 中。

于 2012-05-17T16:25:31.350 回答
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>';
于 2012-05-18T09:47:00.197 回答