我有一个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'];?>¶m1='+val1+'¶m2='+val2;
window.open(url)
}
现在我的问题是我的数据为“ABC6252756 / A#1829533”。当我有这种数据时我没有传递给approve.php 当我们拥有这种数据“ABC07-USVDL2”时,它的价值正在成功传递。 我们对(/,#)字符有任何问题吗?对于Safe Side,我已经为val2(“ABC6252756 / A#1829533”)提供了此数据的警报 它成功地出现了。可能是什么问题?
答案 0 :(得分:2)
您在val1
内引用了val2
和callApprove
,但未包含您设置它们的代码。另外,在onClick函数中使用参数调用callApprove,但是该定义没有参数(function callApprove
) - 也许这就是你初始化它们的意思?
答案 1 :(得分:2)
我认为哈希是你的问题。 hash symbol,#
在网址中具有特定含义,该含义仅是客户端问题;因为它是客户端/浏览器问题,所以哈希及其之后的任何内容都不会被发送到服务器。当您在URL中插入“ABC6252756 / A#1829533”时,浏览器会在将URL发送到服务器之前删除“#1829533”以及之后的所有内容。
解决方案是对查询字符串的每个部分进行正确的URL编码。您在JavaScript中使用encodeURIComponent
,或者我认为在PHP中使用urlencode
。