Javascript函数只接收整数

时间:2014-10-14 14:01:19

标签: javascript php

我调用了一个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");
}

这是怎么回事?

2 个答案:

答案 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])) ?>)"