我调用了一个java脚本函数并用它发送了4个参数,只有在第4个参数只有整数发送时才有效。
这是我的onchange
函数:
onchange="weekchange(this, <?php echo $i ?>,<?php echo $teller ?>,<?php echo $project[$i] ?>)"
当我调用此函数时,我发送了4个参数:this,$ i,$ teller和$ project [$ i]。
当$ project [$ i]只是整数时,我的java脚本函数会接受它。这个变量是项目的名称,这个名字可以有数字,字母和字符,如!@#$%^&amp;在里面。当我有一个项目名称,其中包含一个字母或字符,如!@#$%^&amp;在它里面,它没有做任何事情。此外,当我只有整数并以0开头时,我得到非常奇怪的结果。 01234最终是668?
我的java脚本函数:
function weekchange(selected, weekkeuze, aantalprojecten, projectnaam)
{
var samen;
var week;
var id;
var projecten = String(projectnaam);
alert(selected.value);
week = selected.value;
id = weekkeuze;
samen = "id="+id+"&week="+week+"&projectnaam="+projecten;
var test = document.getElementById(id)
test = test+1;
submit_javascript("GET","capaciteitberekening.php?"+samen+"&dag="+0,id+"ma","true");
submit_javascript("GET","capaciteitberekening.php?"+samen+"&dag="+1,id+"di","true");
submit_javascript("GET","capaciteitberekening.php?"+samen+"&dag="+2,id+"wo","true");
submit_javascript("GET","capaciteitberekening.php?"+samen+"&dag="+3,id+"do","true");
submit_javascript("GET","capaciteitberekening.php?"+samen+"&dag="+4,id+"vr","true");
}
这是怎么回事?
答案 0 :(得分:2)
您正在使用PHP标记动态定义服务器上的部分HTML,但当它到达浏览器时,它将成为元素内的普通旧JavaScript {{{{{ 1}}属性。所以你的代码
onchange
可能会产生一些看起来像这样的HTML:
onchange="weekchange(this, <?php echo $i ?>,<?php echo $teller ?>,<?php echo $project[$i] ?>)"
这不是有效的JavaScript,因为onchange="weekchange(this, 1,some text,project 1234)"
在JavaScript中没有任何意义。即使没有空格project 1234
,也意味着它需要将名为project1234
的JavaScript变量的值传递给函数,而不是传递文字值project1234
。
你需要用引号括起你用PHP生成的任何参数,无论是单引号还是双引号,如下所示:
project1234
答案 1 :(得分:1)
JavaScript中的字符串必须在引号中;将字符串输出到JavaScript层的一种方便方法是使用json_encode
(很高兴输出JSON片段,而不仅仅是整个JSON文档)。属性值中的引号(如onchange
)应标记为HTML实体,因此我们可以使用htmlspecialchars
来处理json_encode
的输出。所以:
onchange="weekchange(this, <?php echo $i ?>,<?php echo $teller ?>,<?php echo htmlspecialchars(json_encode($project[$i])) ?>)"