0

好的,所以在我的<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,但我似乎根本无法在其中引用它。

为什么是这样?

4

2 回答 2

2

您“错误”-将 anArray用作Object.

var jGets = {};
于 2012-10-04T11:11:56.357 回答
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 在这里阅读更多信息,更多关于JSONPHP 的信息可以在这里找到

于 2012-10-04T11:21:07.223 回答