0

大家好,请在下面找到我的代码,因为您可以看到我正在尝试将 php 数组值传递给 js 函数,如果我运行此 scipt 我会得到 3 个警报 parameter0=1,parameter1=2 和 parameter2=3 不同...我想做什么我需要保存parameter0,parameter1和parameter3,以便我可以再传递一个函数......请帮我这样做......

<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>
4

6 回答 6

1

这样

$b = json_encode($a);

并在 stackoverflow 或 Google 上查找 JSON 以了解如何访问它。

于 2012-11-27T17:14:09.877 回答
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'] );
于 2012-11-27T17:14:00.033 回答
0

它在编写您的代码时工作。

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

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

参数1=1,参数2=2,参数3=3

于 2012-11-27T17:14:59.667 回答
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];              
 }    
}
于 2012-11-27T17:16:04.800 回答
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>
于 2012-11-27T17:18:03.910 回答
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]);
}

参数在所有函数中都可用,并且包含作为参数传递给该函数的所有数据,无论该函数是否定义了一定数量的参数。在 MDN 上阅读所有相关信息

arguments对象看起来像一个数组,但不是一个,这就是为什么-要对其进行切片-您需要使用原型中apply的切片方法。MDN - 申请更多信息。Array

总而言之,这是获得所需内容的最快方法,恕我直言
:不要使用数组构造函数,请使用数组文字符号:[]。数组构造函数有时可能会表现得有些奇怪

于 2012-11-27T17:28:34.663 回答