我有一个javascript,通过onchange将值从选择框传递到php文件。
这是列出选择框的值的方式:
foreach($config_group as $value){
if($_SESSION['HOURLY_FT_WIP']['PROD_TESTER']==$value){
echo "<option selected value='".$value."'>".$value."</option>";
}
else{
echo "<option value='".$value."'>".$value."</option>";
}
}
这是将值传递给另一个php页面的脚本:
function PROD_CHANGE_TESTER(){
location_change = document.getElementById("PROD_SEL_TESTER").value;
varURL = "http://" + varServerAddr +
"/hourly_ft_wip/production_line/prod_line_tester.php?tester_change=" +
location_change, LOAD(varURL, "TESTER");
location.reload();
}
现在假设从选择框中选择了值ASL1K & 4K
。它到达php页面:
$_REQUEST[4K] = ""
$_REQUEST[tester_change] = "ASL1K"
看起来我的varURL看起来像这样:tester_change=ASL1K & 4K
所以它把它放在另一个地方。添加/
可能有助于逃避它。但数据来自使用foreach制作的选择。
答案 0 :(得分:1)
在代码中生成网址时,应始终使用encodeURIComponent。这会使用十六进制值对网址部分进行编码,确保添加的参数中没有&
或?
你必须这样做:
function PROD_CHANGE_TESTER(){
location_change = document.getElementById("PROD_SEL_TESTER").value;
varURL = "http://" + varServerAddr +
"/hourly_ft_wip/production_line/prod_line_tester.php?tester_change=" +
encodeURIComponent(location_change), encodeURIComponent(LOAD(varURL, "TESTER"));
location.reload();
}