Search code examples
javascriptxmlhttprequestwebmethod

Return WebMethod Response & Use If Statement To Alert User Based On Response


I'm trying to include an if statement that analyzes the webmethod response which is either true or false. I just want to alert the user the post was successful if the response is true or the post was not successful if the response is false.

I can get the response using xhttp.responseText but I can't figure out how to build that into an if statement inside my javascript below:

//JavaScript that Posts to WebMethod    
<script>
    function createNewComment() {

        var xhttp = new XMLHttpRequest();
        var url = "http://localhost:57766/PALWebService.asmx/insertComment"
        var a = document.getElementsByName("existingguid")[0].value;
        var b = document.getElementsByName("newcomment")[0].value;
        var c = 'existingguid=' + a + '&newcomment=' + b;

        xhttp.open("POST", url, true);

        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        xhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {

            }
        };

        xhttp.send(c);
    }
</script>

Solution

  • I figured it out. After checking that readyState was 4 and status was 200 I simply nested another if statement to check the responseText from the XMLHttpRequest and it was true I called another function and if it was false I notified user the post failed on the webmethod. It may not be perfect, but it works for what I need.

    xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    if (xhttp.responseText = true) {
                        addComment(b, today, userName);
                    }
                    else {
                        document.getElementsByName("newcomment")[0].value = '';
                        $("#commentLabel").html("Your comment was not saved in the database. Please try again or contact system admin.");
                    }
                }
            };