好的,所以在我的<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
中添加数据,但我似乎根本无法在那里引用它。
为什么会这样?
答案 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