Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递到JS函数的PHP变量无效_Javascript_Php_Html_Function_Multidimensional Array - Fatal编程技术网

Javascript 传递到JS函数的PHP变量无效

Javascript 传递到JS函数的PHP变量无效,javascript,php,html,function,multidimensional-array,Javascript,Php,Html,Function,Multidimensional Array,我正在做一个有表格的项目。表中是里程碑和部分里程碑 这是我的代码: <?php $milestones = array(); while ($rij = $db->fetchassoc($result)) { $milestones[$rij['milestone_id']][] = $rij; } foreach ($milestones as $milestone) { echo '<tr id="' . $milestone[0]['milestone_i

我正在做一个有表格的项目。表中是里程碑和部分里程碑

这是我的代码:

<?php
$milestones = array();
while ($rij = $db->fetchassoc($result)) {
    $milestones[$rij['milestone_id']][] = $rij;
}
foreach ($milestones as $milestone) {
    echo '<tr id="' . $milestone[0]['milestone_id'] . '" class="milestone' . $milestone[0]['milestone_id'] . '">';
    echo '<td>' . $milestone[0]['milestone_id'] . '</td>';
    echo '<td><a href="javascript:keuzeGebruiker(milestone' . $milestone[0]['milestone_id'] . ',' . $milestone[0]['milestone_id'] . ');">' . $milestone[0]['milestone_titel'] . '</a></td>';
    echo '<td>' . $milestone[0]['client'] . '</td>';
    echo '</tr>';

    for ($i = 0; $i < count($milestone); $i++) {
        if (empty($milestone[$i]['milestonefase_titel'])) {
            echo '<tr id="' . $milestone[$i]['milestonefase_id'] . '" class="milestone' . $milestone[$i]['milestone_id'] . 'fase fase">';
            echo '<td></td>';
            echo '<td style="color: red">Geen titel beschikbaar!</td>';
            echo '<td></td>';
            echo '</tr>';
        } else {
            echo '<tr id="' . $milestone[$i]['milestonefase_id'] . '" class="milestone' . $milestone[$i]['milestone_id'] . 'fase fase">';
            echo '<td>' . $milestone[$i]['milestonefase_id'] . '</td>';
            echo '<td>' . $milestone[$i]['milestonefase_titel'] . '</td>';
            echo '<td></td>';
            echo '</tr>';
        }
        if (!isset($_COOKIE['milestones'])) {
            echo '<style>.fase{display: none;}</style>';
        }
        if (strpos($_COOKIE['milestones'], $milestone[0]['milestone_id']) !== false) {
            echo '<style>.milestone' . $milestone[0]['milestone_id'] . 'fase{display: table-row!important;}</style>';
        }
    }
}
?>

我需要发送变量:

href=“javascript:keuzeGebruiker(里程碑”。$milestone[0]['milestone\u id']。 “,”.$milestone[0]['milestone_id'].);”但该变量不会发送到我的JS函数

我的第一个参数是单击的里程碑的名称(例如“milestone403”) 我的第二个参数是单击的里程碑的id(例如:“403”)

但我的控制台日志显示:


ReferenceError:未定义milestone403

这是我的JS函数:

<script>
    document.cookie = "milestones=" + [readCookie()];
    var array = readCookie().split(",");

    function keuzeGebruiker(name, value)
    {
        if ($('.' + name + "fase").is(":visible")) // Als milestone zichbaar is, dan word milestone onzichtbaar
        {
            var index = array.indexOf(value);
            if (index !== -1)
            {
                array.splice(index, 1);
            }
            document.cookie = "milestones=" + array;
            $('.' + name + 'fase').attr('style', 'display:none !important')// Maak het onzichtbaar
        } else // Als milestone onzichtbaar is, dat word milestone zichtbaar
        {
            array.push(value);
            document.cookie = "milestones=" + array;
            $('.' + name + 'fase').attr('style', 'display:table-row !important')
        }
    }
</script>

document.cookie=“里程碑=“+[readCookie()”;
var array=readCookie().split(“,”);
函数keuzeGebruiker(名称、值)
{
如果($('.+name+“fase”).is(“:visible”)//Als里程碑zichbaar是,那么单词里程碑onzichtbaar
{
var index=array.indexOf(值);
如果(索引!=-1)
{
阵列拼接(索引1);
}
document.cookie=“里程碑=”+数组;
$('.+name+'fase').attr('style','display:none!important')//Maak het onzichtbaar
}else//Als milestone on zichtbaar是一个单词milestone zichtbaar
{
array.push(值);
document.cookie=“里程碑=”+数组;
$('.+name+'fase').attr('style','display:table row!important'))
}
}
您可以查看我的参数(名称和值)


为什么我不能在我的JS函数中获取我的参数??有人能帮我解决这个问题吗,或者有人能提供解决方案。

您需要引用传递到javascript函数的字符串,否则它会认为它们是javascript变量。由于您已经使用单引号和双引号,因此需要对引号进行转义。在这种情况下,模板化或使用HTML,然后插入PHP变量将使事情变得更简单

echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone[0]['milestone_id']. '\',\''.$milestone[0]['milestone_id'].'\');">' . $milestone[0]['milestone_titel'] . '</a></td>';
echo';

<代码> > p>如果在引用中没有使用字符串,则会将其视为变量。您应该在函数中用引号发送字符串,下面的方法不正确

echo '<td><a href="javascript:keuzeGebruiker(milestone' . $milestone[0]['milestone_id'] . ',' . $milestone[0]['milestone_id'] . ');">' . $milestone[0]    ['milestone_titel'] . '</a></td>';
echo';
下面是正确的方法

echo '<td><a href="javascript:keuzeGebruiker(\'milestone' . $milestone[0]['milestone_id'] . '\',\'' . $milestone[0]['milestone_id'] . '\');">' . $milestone[0]['milestone_titel'] . '</a></td>';
echo';

引用错误:未定义milestone403意味着js认为您试图使用变量milestone403。 所以我认为如果你用撇号会有帮助

有些人认为:

keuzeGebruiker("milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'].'");"


您需要在javascript函数中引用变量,因为它们是字符串而不是javascript变量。我真的非常感谢你解决了我的问题!
$milestoneString=milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'];
href="javascript:keuzeGebruiker(\''.$milestoneString.'\');"