这种Javascript和PHP数据有什么问题

时间:2011-04-04 03:36:08

标签: php javascript jquery

我有一个Html表,它包含通过服务器端php生成的数据。它由许多行组成。每行包含一个名为“Approve”的按钮。当点击“批准”时它会转到一个php文件并进行数据库转换

以下是我在php中使用“批准按钮”的代码

$cntrl = "<input name=btn1  type=button  id=btn1  value=Approve  onClick=\"callApprove('".$row['val1']."','".$row['val2']."');\"";

这是点击“Approve”时调用的JS函数。

function  callApprove(val1,val2){
 var url = 'approve.php?id=<?php echo $_REQUEST['var3'];?>&param1='+val1+'&param2='+val2;
window.open(url)
}

现在我的问题是我的数据为“ABC6252756 / A#1829533”。当我有这种数据时我没有传递给approve.php 当我们拥有这种数据“ABC07-USVDL2”时,它的价值正在成功传递。 我们对(/,#)字符有任何问题吗?对于Safe Side,我已经为val2(“ABC6252756 / A#1829533”)提供了此数据的警报 它成功地出现了。可能是什么问题?

2 个答案:

答案 0 :(得分:2)

您在val1内引用了val2callApprove,但未包含您设置它们的代码。另外,在onClick函数中使用参数调用callApprove,但是该定义没有参数(function callApprove) - 也许这就是你初始化它们的意思?

答案 1 :(得分:2)

我认为哈希是你的问题。 hash symbol#在网址中具有特定含义,该含义仅是客户端问题;因为它是客户端/浏览器问题,所以哈希及其之后的任何内容都不会被发送到服务器。当您在URL中插入“ABC6252756 / A#1829533”时,浏览器会在将URL发送到服务器之前删除“#1829533”以及之后的所有内容

解决方案是对查询字符串的每个部分进行正确的URL编码。您在JavaScript中使用encodeURIComponent,或者我认为在PHP中使用urlencode