Created
December 2, 2012 18:15
-
-
Save YaroslavLyzlov/4190256 to your computer and use it in GitHub Desktop.
[email protected] [NODEJS] -- Собственно, мне как-то надо получить данные с клиента (я получаю дефолтным аяксом, методом GET) но, не могу их получить на сервере. Я вроде бы и понимаю, что получение данных с сервера должно быть в одной области видимости с
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* суть в том, что если | |
var url_string = request.url; | |
var params = url.parse(url_string, true).query; | |
console.log(params["name"]); | |
в одной области видимости с response.end() (то есть, в collection.find(), то всё работает, но я не знаю, как мне совместить добавление в БД и извлечение из неё, чтобы всё было хорошо и никто никому не мешал) | |
*/ | |
var http = require("http"); | |
var url = require("url"); | |
var Db = require ("mongodb").Db; | |
var Server = require("mongodb").Server; | |
function start () { | |
'use strict'; | |
function onRequest (request, response) { | |
'use strict'; | |
var db = new Db ("TestApp", new Server ("127.0.0.1", 27017, {})); | |
response.writeHead(200, {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"}); | |
var url_string = request.url; | |
var params = url.parse(url_string, true).query; | |
console.log(params["name"]); | |
db.open (function (err, db) { | |
db.collection ('ObjectCollection', function (err, collection) { | |
collection.find().toArray (function (err, docs) { | |
console.log (docs); | |
response.write(JSON.stringify(docs)); | |
response.end(); | |
}); | |
}); | |
}); | |
} | |
http.createServer(onRequest).listen(8080); | |
console.log ('Server has started...') | |
} | |
exports.start = start; | |
/////////// | |
$(document).ready (function () { | |
function getXmlHttp() { | |
var xmlhttp; | |
try { | |
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); | |
} catch (e) { | |
try { | |
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); | |
} catch (E) { | |
xmlhttp = false; | |
} | |
} | |
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { | |
xmlhttp = new XMLHttpRequest(); | |
} | |
return xmlhttp; | |
} | |
function ConstructCollection (name, quantity, price, sum) { | |
'use strict'; | |
this.name = name; | |
this.quantity = quantity; | |
this.price = price; | |
this.sum = sum; | |
} | |
function Validate (price, quantity) { | |
'use strict'; | |
var alerts = []; | |
if (isNaN(quantity)) { | |
alerts.push ("* Bad data (Quantity)") | |
} | |
if (isNaN(price)) { | |
alerts.push ("* Bad data (Price)") | |
} | |
return alerts; | |
} | |
$(".btn").on ("click", function () { | |
'use strict'; | |
var name = $("#id-name").val(), price = $("#id-price").val(), quantity = $("#id-quantity").val(); | |
price = price.replace(/\s/g, ''); | |
quantity = quantity.replace(/\s/g, ''); | |
name = name.replace(/\s/g, ''); | |
price = parseFloat(price); | |
quantity = parseFloat(quantity); | |
var alerts = Validate(price, quantity); | |
if (alerts.length <= 0) { | |
alert(1) | |
$(".badge").remove(); | |
$(".del").remove(); | |
$(".span4").prepend ("<span class='badge badge-success'>Succes! The data are valid!</span><br class = 'del'>"); | |
var sum = price*quantity; | |
var collection = new ConstructCollection(name, quantity, price, sum); | |
Send (collection); | |
console.log (collection); | |
} else { | |
$(".badge").remove(); | |
$(".del").remove(); | |
for (var i = 0; i < alerts.length; i++) { | |
$(".span4").prepend ("<span class='badge badge-important'>" + alerts[i] + "</span><br class = 'del'>"); | |
} | |
} | |
}); | |
function Send(collection) { | |
var req = getXmlHttp(); | |
req.onreadystatechange = function () { | |
if (req.readyState == 4) { | |
if (req.status == 200) { | |
alert(1); | |
} | |
} | |
} | |
var params = 'name=' + encodeURIComponent(collection.name) + '&quantity=' + encodeURIComponent(collection.quantity) + '&price=' + encodeURIComponent(collection.price) + '&sum=' + encodeURIComponent(collection.sum); | |
req.open('GET', 'http://localhost:8080?'+ params, true); | |
req.send(null); | |
} | |
}); |
да, у меня тоже, в чём вообще может быть проблема? я не понимаю и не знаю, что делать :(
Запускай отладчик - http://habrahabr.ru/post/114825/ or http://technosophos.com/content/nodejs-debugging-built-debugger
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Вот эта часть нормально работает.
Дело точно не в этой части сервера