Javascript 从js传递到Servlet时在参数中接收NULL。

Javascript 从js传递到Servlet时在参数中接收NULL。,javascript,servlets,parameters,Javascript,Servlets,Parameters,当试图从JavaScript接收参数时,我得到了null。我浏览了几篇文章,但无法找出代码中的错误 下面是我发送请求的代码: function funcOnChange() { var index = document.detail.Class.selectedIndex; var valueSelected = document.detail.Class.options[index].value; handleRequestStateChange = function

当试图从JavaScript接收参数时,我得到了null。我浏览了几篇文章,但无法找出代码中的错误

下面是我发送请求的代码:

function funcOnChange() {
    var index = document.detail.Class.selectedIndex;
    var valueSelected = document.detail.Class.options[index].value;

    handleRequestStateChange = function()
    {
        // Check to see if this state change was "request complete", and
        // there was no server error (404 Not Found, 500 Server Error, etc)
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            var substring=xmlHttp.responseText;
            alert("Alert Dialog! Gaurav");
        }
    }
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'http://localhost:8080/ReportFetcher/FormHandler', true);
    xhr.send(valueSelected);
}
我从以下代码中获取
valueselected
,并且
valueselected
是正确的:

<select name="Class" onchange="funcOnChange()">
            <option value="None">None</option>
            <option value="FIRST">FIRST</option>
            <option value="SECOND">SECOND</option>
            <option value="THIRD">THIRD</option>
            <option value="FOURTH">FOURTH</option>
            <option value="FIFTH">FIFTH</option>
            <option value="SIXTH">SIXTH</option>
            <option value="SEVENTH">SEVENTH</option>
            <option value="EIGHTH">EIGHTH</option>
            <option value="NINTH">NINTH</option>
            <option value="TENTH">TENTH</option>
        </select><br>
问题:
selectedClass
在此处为空

建议我犯错误的地方。

试试这个

function funcOnChange() {
    var index = document.detail.Class.selectedIndex;
    var valueSelected = "Class="+document.detail.Class.options[index].text;

    .....
    .....

    xhr.send(valueSelected);
}

如果您通过任何代理/HTTP监视器工具(我使用Charles)查看您的请求和响应,您将看到您没有以键值对的形式发送请求(简单地说,您没有发送Class=value),而是仅以字符串的形式发送Class属性的值。(即,如果在选择框中选择第三个选项,则为第三个)。如果要以键值对的形式读取服务器上的数据,则需要发送

function funcOnChange() {
    var index = document.detail.Class.selectedIndex;
    var valueSelected = document.detail.Class.options[index].value;

    handleRequestStateChange = function()
    {
        // Check to see if this state change was "request complete", and
        // there was no server error (404 Not Found, 500 Server Error, etc)
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            var substring=xmlHttp.responseText;
            alert("Alert Dialog! Gaurav");
        }
    }
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'http://fiddle.jshell.net/', true);    
    var form = new FormData();
    form.append("Class",valueSelected)
    xhr.send(form);
}

我认为键值映射存在一些问题,但无法找出问题发生的位置。另外,我尝试使用GET请求传递值,得到了参数。这对我来说很有效,是否有更好的方法来定义所选值的键。我认为否,键将在Servlet中访问,因此我们需要手动对一些键进行加密,我认为存在一些编译或刷新问题。但这种方式是行不通的。我重新启动了服务器并重新编译了它。所以我没有得到参数。因此,请建议其他方法。如果您想读取没有键值的数据,请尝试HTTPServletRequest getReader接口。尽管我建议不要使用它。在这个问题中提供了一个例子
function funcOnChange() {
    var index = document.detail.Class.selectedIndex;
    var valueSelected = document.detail.Class.options[index].value;

    handleRequestStateChange = function()
    {
        // Check to see if this state change was "request complete", and
        // there was no server error (404 Not Found, 500 Server Error, etc)
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            var substring=xmlHttp.responseText;
            alert("Alert Dialog! Gaurav");
        }
    }
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'http://fiddle.jshell.net/', true);    
    var form = new FormData();
    form.append("Class",valueSelected)
    xhr.send(form);
}