传递包含'&'的值在javascript到PHP

时间:2015-07-23 07:01:07

标签: javascript php

我有一个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制作的选择。

1 个答案:

答案 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();
}