2009-10-04 40 views
0

有人可以告诉我这个代码有什么问题吗? 基本上我正在做的是为一些GET变量创建一个php数组。然后,我从该PHP数组创建一个js数组并将其传递给一个js函数。问题是函数没有被调用。我不会看到弹出的“嗨”警报。帮助简单的JavaScript的PHP/JS阵列

<script type="text/javascript"> 
function change_values(js_array) 
{ 
    alert("hi"); 
} 
</script> 
<?php 

$first_date_month = @$_GET["first_date_month"]; 
$last_date_month = @$_GET["last_date_month"]; 
$resume_date_month = @$_GET["resume_date_month"]; 
$pay_date_month  = @$_GET["pay_date_month"]; 

$first_date_day  = @$_GET["first_date_day"]; 
$last_date_day  = @$_GET["last_date_day"]; 
$resume_date_day = @$_GET["resume_date_day"]; 
$pay_date_day  = @$_GET["pay_date_day"]; 

$pay_time_hour  = @$_GET["pay_time_hour"]; 
$pay_time_minutes = @$_GET["pay_time_minutes"]; 

$args = array($first_date_month, $first_date_day, $last_date_month, $last_date_day, $resume_date_month, $resume_date_day, $pay_date_month, $pay_date_day, $pay_time_hour, $pay_time_minutes); 

print_r($args); 

echo "<script language='text/javascript'>\n"; 
echo "var js_array = new Array();\n"; 
foreach($args as $key => $value) 
    echo "js_array[$key] = $value;\n"; 
echo "change_values(js_array)\n"; 
echo "</script>\n"; 

一些html源代码可能有助于更好地理解发生了什么。

<script type="text/javascript"> 
function change_values(js_array) 
{ 
    alert("ola"); 
} 
</script> 
Array 
(
    [0] => 3 
    [1] => 99 
    [2] => 99 
    [3] => 99 
    [4] => 99 
    [5] => 99 
    [6] => 99 
    [7] => 99 
    [8] => 99 
    [9] => 99 
) 
<script language='text/javascript'> 
var js_array = new Array(); 
js_array[0] = 3; 
js_array[1] = 99; 
js_array[2] = 99; 
js_array[3] = 99; 
js_array[4] = 99; 
js_array[5] = 99; 
js_array[6] = 99; 
js_array[7] = 99; 
js_array[8] = 99; 
js_array[9] = 99; 
change_values(js_array); 
</script> 

在此先感谢。

回答

6

这是<script type='text/javascript'>不是<script language='text/javascript'>。此外,您还可以使用此序列化阵列(但这不是这里的问题):

echo "var js_array = " . json_encode($args) . ";\n"; 
0

在第二部分,其中数组被映射到JS,尝试用

更换

<script language='text/javascript'> 

<script type='text/javascript'> 

问候

1

您已经使用了language属性为你的第二个script元素而不是type。改为使用type="text/javascript"来尝试。您还应该使用json_encode而不是您自己的功能。

0

变化

<script language='text/javascript'> 

<script type='text/javascript'> 
0

能尝试更改

echo "<script language='text/javascript'>\n"; 

echo "<script type='text/javascript'>\n"; 

它在我的电脑上像这样工作。