将数组值传递给javascript函数并将其存储在变量中

时间:2012-11-27 17:10:57

标签: php javascript html arrays function

你好人们请在下面找到我的代码,因为你可以看到iam试图将php数组值传递给js函数如果我运行这个scipt我得到3个警报参数0 = 1,参数1 = 2和参数2 = 3不同...什么是iam试图做的是我需要保存参数0,参数1和参数3,以便我可以再传递一个函数....请帮我做这个......

<script type="text/javascript">
function mufunc(a)
{
    var temp = new Array();
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);               
    }
    //alert('sri'+i+'='+temp[i]);
}
</script>

<?php
$a = array('1','2','3');
$b = implode("~",$a);
?>
<a href="javascript:void(0)" onClick="mufunc('<?php echo $b; ?>')">Click Here</a>

6 个答案:

答案 0 :(得分:1)

this

$b = json_encode($a);

并在stackoverflow上查找JSON,或者在Google上查找如何访问它。

答案 1 :(得分:0)

您可以在全局范围内声明temp,以便以后可以在任何范围内使用它:

var temp = new Array();

function mufunc(a)
{
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);               
    }
    //alert('sri'+i+'='+temp[i]);
}

可替换地:

var params = new Array();

function mufunc(a)
{
    var temp= new Array();
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);   
        params['parameter'+i] = temp[i];          
    }
}

现在您可以像访问它一样访问它:

alert( params['parameter0'] );
alert( params['parameter1'] );

答案 2 :(得分:0)

它的代码正在写入。

您的计数不同,一个从0开始,一个从1开始:

尝试将for循环中的起始变量更改为1,然后将temp中的i减去1,您应该得到:

parameter1 = 1,parameter2 = 2且parameter3 = 3

答案 3 :(得分:0)

只需使用全局数组变量,并为其指定参数。

var parameter = [];
function mufunc(a)
{
var temp = new Array();
dump(temp);
temp = a.split('~');    
for(i=0;i<temp.length;i++)
{
    alert('parameter'+i+'='+temp[i]); 
    parameter[i] = temp[i];              
 }    
}

答案 4 :(得分:0)

利用PHP的json_encode功能。

<script type="text/javascript">

function mufunc(a)
{
    // removed "var" to make "temp" global.
    // and we don't have to parse anything, the JS engine did
    // it for us already!
    temp = new Array();
    for(var i=0; i < temp.length; i++)
    {
        alert(i + ": " temp[i]); 
    }
}
</script>

<?php
$a = array('1','2','3');
$object_string = json_ecode($a);
?>
<a href="javascript:void(0)" onClick="mufunc(<?php print $object_string; ?>)">Click Here</a>

答案 5 :(得分:0)

由于我的评论可以被视为答案,我将(重新)在此发布:

在你的php脚本中,只需传递如下参数:

onclick="<?php echo implode(',',$b);?>">
//or if the you're dealing with strings:
onclick="<?php echo '"'.implode('","',$b).'"';?>">

然后在myfunc

中执行此操作
function myfunc()
{
    var parameters = Array.prototype.slice.apply(arguments,[0]);
}

所有函数都提供了参数,并且包含作为参数传递给该函数的所有数据,函数的天气是否定义了一定数量的参数。 Read all about it on MDN

arguments对象看起来像一样,但不是一个,这就是为什么要切片 - 你需要apply来自{{1}的切片方法1}}原型。 MDN - Apply了解更多信息。

总而言之,这是获得所需内容的最快方式,恕我直言 BTW:不要使用数组构造函数,请使用数组文字表示法:Array。数组构造函数可能会不时出现一些奇怪的行为