2014-11-07 113 views
0

我需要一些幫助來完成我需要做的任務。基本上這個問題是一個猜數字遊戲。根據我們的學生人數,我們在[0,1023]區間內被分配一個數字,我們有11次猜測來獲得正確的數字。我知道我必須使用二進制搜索來獲取數字,我唯一的問題是連接到服務器並獲得結果。使用jsonp製作ajax請求(無jquery)

我們給出這樣的:

的示例請求如下所示:

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

而且也給該請求返回以下參數: 1:代碼以確定如果你的猜測是等於,低於數量小於或大於 2:消息字符串 3:我的應用程序所做的猜測數

這是我到目前爲止已經試過,只是作爲測試獲得日e服務器請求工作。我所得到的回報是「對象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; 
} 

編輯:我的代碼當前狀態。

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); 
} 

回答

1

檢查您的變量名稱。您正在覆蓋功能組件。

喜歡的東西

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

就不能工作,你應該看到自己的問題......

+0

哦jeeze,我不知道爲什麼我之前沒有注意到這一點。我一直試圖讓這個工作這麼長時間,一定是把自己炸了。 – Jesse 2014-11-07 01:37:09