aime
aime

Reputation: 127

XMLHttpRequest request / Servlet response is null

There is a problem with servlet. I send form data by XMLHttpRequest to a server, but servlet handles request object incorrectly and send in response object "null.null". I tried following things but nothing helps:

Please take a look. If there are any suggestions how to make it works without using jQuery I would appreciate a lot.

HTML:

<div id="request-form">
    <form enctype="application/x-www-form-urlencoded" method="post">
        Contractor<input type="text" name="contractor"><br>
        Contract No<input type="text" name="contract-no">
        <input type="button" onclick=clickOnButton() value="Submit"><br>
    </form>
</div>

JS:

var httpRequest;

function clickOnButton() {
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }

    var dataForRequest = 'contract=' + document.getElementsByName('contractor').value + '&contract-no=' + document.getElementsByName('contract-no').value;
    httpRequest.onreadystatechange = responseHandler;
    httpRequest.open('POST', "/AjaxServ", true);
    httpRequest.send(dataForRequest);
}

function responseHandler() {
    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            var line = httpRequest.responseText;
            alert(line);
        }
    }
}

Java:

public class ServletClass extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String contractor = req.getParameter("contractor");
        String contractNo = req.getParameter("contract-no");
        resp.setContentType("text/plain");
        PrintWriter out = resp.getWriter();
        out.write(contractor + "." + contractNo);
    }
}

Upvotes: 0

Views: 2515

Answers (1)

Dese
Dese

Reputation: 11

Shouldn't it be 'contractor=' + document.getElementsByName('contractor').value instead of 'contract=' + document.getElementsByName('contractor').value ?

Upvotes: 1

Related Questions