0

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>

FormHandler.java の onPost() でコールバックを受信して​​います

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    log.info("IN form doPost");
    String selectedClass = request.getParameter("Class");
    log.info(selectedClass);

}

問題: selectedClassここでは null です。

私が間違っているところを提案してください。

4

2 に答える 2

1

これを試して

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

    .....
    .....

    xhr.send(valueSelected);
}
于 2013-05-15T11:28:02.433 に答える
0

プロキシ/ HTTP 監視ツール (私は Charles を使用) でリクエストとレスポンスを確認すると、リクエストをキーと値のペアとして送信していないことがわかります (簡単に言えば、Class=value を送信していません)。文字列としての Class 属性の値。(つまり、選択ボックスでオプション Third を選択した場合は Third)。サーバー上のデータをキーと値のペアとして読み取りたい場合は、 FormDataを送信する必要があります。

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);
}
于 2013-05-15T11:37:55.973 に答える