xmlhttp.open("GET","http://localhost:8001/", true);
Также вы пытаетесь обслуживать front-end (index.html) и обслуживать запросы AJAX в том же URI. Для этого вам нужно будет ввести логику на ваш server.js, который будет различать ваши запросы AJAX и обычный запрос доступа к http. Для этого вам нужно либо ввести данные GET / POST (т. Е. Позвонить http://localhost:8001/?getstring=true
), либо использовать другой путь для ваших запросов AJAX (т. Е. Вызвать http://localhost:8001/getstring
). На конце сервера вам нужно будет изучить объект запроса, чтобы определить, что писать в ответ. Для последнего варианта вам нужно использовать модуль 'url' для анализа запроса. listen()
, но неправильно записываете ответ. Прежде всего, если вы хотите обслуживать index.html при навигации по http: // localhost: 8001 / , вам нужно записать содержимое файла в ответ с помощью response.write()
или response.end()
. Во-первых, вам нужно включить fs=require('fs')
, чтобы получить доступ к файловой системе. Затем вам нужно фактически подать файл. string
будет undefined
(или, возможно, null
), потому что эта строка будет выполнена до завершения запроса AJAX (т. Е. ResponseText по-прежнему пуст). Если вы используете его синхронно (третий параметр = false), вы можете написать встроенный код, как вы это делали. Это не рекомендуется, так как он блокирует браузер во время запроса. Асинхронная операция обычно используется с функцией onreadystatechange, которая может обрабатывать ответ после его завершения. Вам необходимо изучить основы XMLHttpRequest. Начните здесь . Вот простая реализация, которая включает все вышеперечисленное:
server.js:
var http = require('http'),
fs = require('fs'),
url = require('url'),
choices = ["hello world", "goodbye world"];
http.createServer(function(request, response){
var path = url.parse(request.url).pathname;
if(path=="/getstring"){
console.log("request recieved");
var string = choices[Math.floor(Math.random()*choices.length)];
console.log("string '" + string + "' chosen");
response.writeHead(200, {"Content-Type": "text/plain"});
response.end(string);
console.log("string sent");
}else{
fs.readFile('./index.html', function(err, file) {
if(err) {
// write an error response or nothing here
return;
}
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(file, "utf-8");
});
}
}).listen(8001);
console.log("server initialized");
frontend (часть индекса. html):
function newGame()
{
guessCnt=0;
guess="";
server();
displayHash();
displayGuessStr();
displayGuessCnt();
}
function server()
{
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://localhost:8001/getstring", true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
string=xmlhttp.responseText;
}
}
xmlhttp.send();
}
Вам должно быть удобно с AJAX. Используйте учебный центр mozilla, чтобы узнать о XMLHttpRequest. После использования основного объекта XHR вы, скорее всего, захотите использовать хорошую библиотеку AJAX вместо того, чтобы вручную записывать запросы AJAX в кросс-браузер (например, в IE вам нужно использовать ActiveXObject вместо XHR). AJAX в jQuery отлично, но если вам не нужны все остальные предложения jQuery , найдите хорошую библиотеку AJAX здесь: http://microjs.com/ . Вам также необходимо получить удобство с документами node.js, найденными здесь . Найти http://google.com для некоторых хороших уроков сервера node.js и статических файловых серверов. http://nodetuts.com - хорошее место для начала.
UPDATE: я изменил response.sendHeader()
на новый response.writeHead()
в коде выше !!!
С левой стороны вы можете увидеть значок «Настройки», нажмите там.
Теперь выберите «Group Linkable Services» & amp; Просмотреть все из списка.
В нем будут перечислены все учетные записи