从函数中访问javascript数组

时间:2012-10-04 11:04:54

标签: php jquery

好的,所以在我的<head>部分,我有以下内容:

<script>
    var userDefaultInfo = '<?=$userInfo;?>';
    var jGets = new Array ();
    <?
    if(isset($_GET)) {
        foreach($_GET as $key => $val)
            echo "jGets[\"$key\"]=\"$val\";\n";
    }
    ?>
</script>

现在在我的外部.JS文件中,在$(document).ready()部分,我可以访问userDefaultInfo,但是,我试图访问jGets,但不是直接从那里访问。

外部.JS文件中的

,在$(document).ready()之外;我有以下功能:

var sendGET = function () {
    var data = $(this).val();
    var elementName = $(this).attr("name");
    var url = "zephi.php?p=home/support/admin_support.php&"+elementName+"="+data;
    jQuery.each(jGets, function(i, val) {
           alert(val);
        });
    alert(url);
    window.location = url;
}

当用户更改框时,此功能会使用数据触发并更改窗口位置。但是,我想在变量jGets中添加数据,但我似乎根本无法在那里引用它。

为什么会这样?

2 个答案:

答案 0 :(得分:2)

您使用Array作为Object“错误”。

var jGets = {};

答案 1 :(得分:0)

或许可以执行以下任一操作:

echo 'var jGets = '.(isset($_GET) ? preg_replace('/^"|"$/','',json_encode($_GET)) : '{}').';'
//or
echo 'var jGets = JSON.parse('.isset($_GET) ? json_encode($_GET); : '"{}"'.');'

这将生成一个对象文字,为jGets分配所需的一切,而不必乱用循环。由于JSON代表JavaScript Object Notation,因此使用它来相应地设置变量似乎是合乎逻辑的。阅读json_encode here上的详情,有关PHP中JSON的更多内容here