Vinnaren i pepparkakshustävlingen!
2017-01-26, 21:26
  #1
Medlem
Hej, håller på att koda lite med hjälp av node.js, men har fastnat och kan inte se vad jag har gjort fel. Jag håller på att göra bl.a. översättare mm, men det händer inget när jag skriver in ord i boxarna, precis som det inte blir svar på anropet eller något. Trots felsökning kan jag inte se felet, kanske jag stirrat mig blind på min egen kod, så därför vänder jag mig hit, i hopp om att någon här kan se det jag inte ser...

Tack på förhand!

Här är koden!

###########################SERvER.JS KOD####################
Kod:
Kod:
var http = require('http');
var fs = require('fs');

var indexHtml;

fs.readFile("index.html", { encoding: 'utf8' }, function(err, data) {
    if (err) {
        console.log("Error in read: " + err);
        process.exit(1);
    }
    indexHtml = data.toString();
});

http.createServer(function (req, resp) {
    var parts = req.url.split("/");
    console.log(parts);
    if (parts.length == 2 && (parts[1] == "" || parts[1] == "index.html")) {
        resp.writeHead(200, { 'Content-Type': "text/html" });
        resp.end(indexHtml);
    } 
	
	//===============================================================Uppgift 1==========================================================
	
	else if (parts.length == 3 && parts[1] == "translate") {
        var translation = {
            english: parts[2],
            swedish: "(unknown)"
        };
        if (translation.english == "1") { translation.swedish = "I"; }
        	else if (translation.english == "2") { translation.swedish = "II"; }
       		
       		else if (translation.english == "3") { translation.swedish = "III"; }
			
			else if (translation.english == "4") { translation.swedish = "IV"; }
			
			else if (translation.english == "5") { translation.swedish = "V"; }
			
			else if (translation.english == "6") { translation.swedish = "VI"; }
			
			else if (translation.english == "7") { translation.swedish = "VII"; }
			
			else if (translation.english == "8") { translation.swedish = "VIII"; }
			
			else if (translation.english == "9") { translation.swedish = "IX"; }
			
			else if (translation.english == "10") { translation.swedish = "X"; }
			
			else {
				translation.swedish = "okänd ";
				translation.english + translation.swedish;
			}
        	var jsonDoc = JSON.stringify(translation);
        	resp.writeHead(200, { 'Content-Type': "text/html" });
        	resp.end(jsonDoc);
		
//===============================================================Uppgift 2==========================================================
		
	} else if (parts.length == 3 && parts[1] == "asciitranslate") {
        var asciiTranslation = {
            text: parts[2],
            ascii: "fel"
			
		};
		
		if (asciiTranslation.text != "") {
			
			asciiTranslation.ascii = "";
		
			for(var i = 0; i < asciiTranslation.text.length; i++){
				asciiTranslation.ascii = asciiTranslation.ascii + asciiTranslation.text.charCodeAt(i)+"<br>";
			}
		}
		
		
        var jsonDoc = JSON.stringify(asciiTranslation);
        resp.writeHead(200, { 'Content-Type': "text/html" });
        resp.end(jsonDoc);
    
//===============================================================Uppgift 3==========================================================
	
	} else if (parts.length == 3 && parts[1] == "asciitranslate2") 

		{
			var asciiSort = {
			text: parts[2],
			asciiAsort2: "fel",
			asciiArray: ""
		};
		function findMinInArray(numbers, fromPos){
			var minPos = fromPos;
			var i = fromPos + 1;
			while (i < numbers.length){
				if (numbers[i] < numbers[minPos]){
					minPos = i;
				}
				i += 1;
			}
			return minPos;
		}
		function placeAllInOrder(numbers) {
			var k = 0;
			while (k < numbers.length) {
				var i = findMinInArray(numbers, k);
				var temp = numbers[i];
				numbers[i] = numbers [k];
				numbers[k] = temp;
				k += 1;
			}
		}
		
		var x = [];
		if (asciiSort.text != "") {
			asciiSort.asciiAsort2 = "";	
			for(var i = 0; i < asciiSort.text.length; i++)

			{
				asciiSort.asciiAsort2 = asciiSort.asciiAsort2 + asciiSort.text.charCodeAt(i);
				x [i] = asciiSort.text.charCodeAt(i);
			}		
			
				
			placeAllInOrder(x);
			x.sort(function(a,b){return a-b});
			asciiSort.asciiArray = x ;
			console.log(x);
		}
		var jsonDoc = JSON.stringify(asciiSort);
		resp.writeHead(200, { 'Content-Type': "text/html" });
		resp.end(jsonDoc);
    	} 

	else {
        resp.writeHead(404, { 'Content-Type': "text/html" });
        resp.end("<!doctype html><title>Not found</title>You suck!");
    	}

	}

).listen(8888);

########################HTML KOD############################

Kod:
<html>
	<head>
		<meta charset="utf-8">
			<title>Modul 5</title>
            <link rel="stylesheet" href="css.css">
            <link rel="stylesheet" href="css.css">
            <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
			<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
			<script type="text/javascript">
				$(document).on("ready", function() {
                $("#translateWordBtn").on("click", function() {
                        var word = $("#translateWord").val();
                        $.ajax({
                            url: "translate/" + word,
                            dataType: "JSON"
                        }).done(function(data) {
                            $("#translateResult").html(data.english + " is " + data.swedish + " in Roman numbers");
                        });
                    });
                });
				$(document).on("ready", function() {
                $("#asciiBtn").on("click", function() {
                        var word = $("#asciiSkoj").val();
                        $.ajax({
                            url: "asciitranslate/" + word,
                            dataType: "JSON"
                        }).done(function(data) {
                            $("#asciiString").html(data.ascii);
                        });
                    });
                });
				$(document).on("ready", function() {
                $("#asciiBtn2").on("click", function() {
                        var word = $("#asciiSkoj2").val();
                        $.ajax({
                            url: "asciitranslate2/" + word,
                            dataType: "JSON"
                        }).done(function(data) {
                            $("#asciiString2").html(data.asciiArray + "<br>");
                        });
                    });
                });
            </script>
			 
	</head>
<body>
			<fieldset>
				<legend>Uppgift 1</legend>
				<input type="search" placeholder="Siffra" id="translateWord">
				<button id="translateWordBtn">Konvertera till romerska siffror</button>
				<p id="translateResult"></p>
            </fieldset>
			
			<fieldset>
				<legend>Uppgift 2</legend>
				<input type="search" placeholder="Ord för översättning" id="asciiSkoj">
				<button id="asciiBtn">Konvertera text till Ascii</button>
				<p id="asciiString"></p>
            </fieldset>
			
			<fieldset>
				<legend>Uppgift 3</legend>
				<input type="search" placeholder="Ord" id="asciiSkoj2">
				<button id="asciiBtn2">Sorterat i värdeordning</button>
				<p id="asciiString2"></p>
            </fieldset>
</body>
</html>
Citera
2017-01-26, 22:44
  #2
Medlem
Försök gärna indentera koden(korrekt).

Ledtråd..
Vad tror du händer om man göra:
$.ajax({..}).done(handler);

Men om ajax requesten inte funkar ?
Citera
2017-01-27, 10:05
  #3
Medlem
kimdah2002s avatar
Jag kopierade koden rakt av och den ger svar via ajax som verkar helt ok

matar jag in "11" på uppgift 1 får jag svar "11 is okänd in Roman numbers" fel men svar
matar jag in "Nils" på uppgift 2 får jag svar "78 105 108 115" verkar ok
matar jag in "Peter" på uppgift 3 får jag svar "80,101,101,114,116" verkar ok

Koden kunde skrivas snyggare men håller man på och lär sig så kanske man tänker mest på att man skall få det att fungera först :-)

Det enda fel jag får är: http://localhost:8888/css.css Failed to load resource: the server responded with a status of 404 (Not Found) men det beror på att jag inte hittade din css.css kod o skapade någon sådan fil, du försöker dessutom ladda den två gånger.

En tanke i efterhand är att du har ett fel i din css.css som gör att programmet avbryts hos dig men fungerar hos mig ?
__________________
Senast redigerad av kimdah2002 2017-01-27 kl. 10:22.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback