Jesse
Jesse

Reputation: 85

Making an ajax request with jsonp(no jquery)

I need some help on an assignment that I need to do. Basically the question is a number guessing game. We're assigned a number in the interval [0,1023] based on our student number and we have 11 guesses to get the right number. I know I have to use a binary search to get the number, my only problem is connecting to the server and getting a result.

We're given this:

A sample request looks as follows:

http://142.132.145.50/A3Server/NumberGuess?snum=1234567&callback=processResult&guess=800

And also given that the request returns the following parameters: 1: A code to determine if your guess is equal, less than or greater than the number 2: Message string 3: Number of guesses made by my application

This is what I've tried so far, just as a test to get the server request working. All I get in return is "object HTMLHeadingElement"

window.onload = function() {
    newGuess();
}

function newGuess() {
    var url = "http://142.132.145.50/A3Server/NumberGuess?snum=3057267&callback=processResult&guess=600";

    var newScriptElement = document.createElement("script");
    newScriptElement.setAttribute("src", url);
    newScriptElement.setAttribute("id", "jsonp");

    var oldScriptElement = document.getElementById("jsonp");
    var head=document.getElementsByTagName("head")[0];
    if (oldScriptElement == null) {
        head.appendChild(newScriptElement);
    } else {
        head.replaceChild(newScriptElement, oldScriptElement);
    }
}

function processResult(code,message,guesses) {
    var code = document.getElementById("code");
    var message = document.getElementById("message");
    var guesses = document.getElementById("guesses");

    code.innerHTML = code;
    message.innerHTML = message;
    guesses.innerHTML = guesses;
}

EDIT: Current state of my code.

window.onload = function() {
    min = 0;
    max = 1023;
    mid = 0;

        setInterval(newGuess,1000);

};

function newGuess() {
    mid = Math.floor((max-min)/2);
    var url = "http://142.132.145.50/A3Server/NumberGuess?snum=3057267&callback=processResult&guess="+mid;

    var newScriptElement = document.createElement("script");
    newScriptElement.setAttribute("src", url);
    newScriptElement.setAttribute("id", "jsonp");

    var oldScriptElement = document.getElementById("jsonp");
    var head=document.getElementsByTagName("head")[0];
    if (oldScriptElement == null) {
        head.appendChild(newScriptElement);
    } else {
        head.replaceChild(newScriptElement, oldScriptElement);
    }
}

function processResult(codeJ,messageJ,guessesJ) {
    code = document.getElementById("code");
    message = document.getElementById("message");
    guesses = document.getElementById("guesses");

    code.innerHTML = codeJ;
    message.innerHTML = messageJ;
    guesses.innerHTML = guessesJ;

    if(codeJ == 0){
        return;
    }else if(codeJ == -1){
       min = mid + 1;
    }else if(codeJ == 1){
       max = mid -1;
    }
    console.log(mid);
}

Upvotes: 0

Views: 84

Answers (1)

tkausl
tkausl

Reputation: 14269

Check your variable-names. You are overwriting the function-patameters.

Something like

code.innerHTML = code;
message.innerHTML = message;
guesses.innerHTML = guesses;

just CAN'T work, you should see the problem yourself...

Upvotes: 1

Related Questions