2017-02-21 18 views
0

HI Я хотел бы использовать HTML Ajax вызова MongoDB и заполнить результаты в моем HTMLHTML узел Ajax вызова MongoDB не удалось

клиента HTML (dbajax.html):

$.ajax({ 
    url: 'http://xx.xx.xx.xx:9000/db', 
    type: 'get', 
    dataType: 'jsonp', 
    jsonp: 'jsonp', // mongod is expecting the parameter name to be called "jsonp"}) 

сервера dbserver.js

http.createServer(function (request,response) 
{ 
    // serve site 
    if (request.url === "/") 
    { 
     response.writeHeader(200, {"Content-Type": "text/html"}); 
     response.write(html); 
    } 
    if (request.url === "/db") 
    { 
     console.log("db"); 
     MongoClient.connect("mongodb://localhost:27017/MyDb2", function (err, db) { 

     db.collection('Persons', function (err, collection) { 

    collection.find().toArray(function(err, items) { 
     if(err) throw err;  
     console.log(items);  
     response.writeHead(200, {"Content-Type:": "application/json"}); 
     var submittedPost = {}; 
     submittedPost['message'] = 'Proof that Node and Mongo are   working..'; 
     response.write("_wrapper('"); 
     response.write(JSON.stringify(items)); 
     response.write("')");    
     response.end(); 
    }); 

}); 

}); 
    } 
     if (request.url === "/dbcall"){ 
      console.log("dbcall"); 
      fs.readFile('./dbajax.html', function (err, html) 
     { 
     //response.writeHeader(200, {"Content-Type": "text/html"}); 
     response.write(html); 
     response.end(); 
    } 
       ) 


    } 
    //response.end(); 
}).listen(9000); 

I типа http://xx.xx.xx.xx:9000/dbcall он называет dbajax.html, но ничего не произойдет дальше.
Я предполагаю, что html ajax вызовет http://xx.xx.xx.xx:9000/db и вернет результат JSON.

Итак, что не так? Я не хочу использовать Express и другие фреймворки. Спасибо

ответ

0

Может быть несколько причин отсутствия ответа. Вы не обрабатываете условие ошибки db.collection('Persons', ...). Вы должны проверить, заполняется ли здесь err. И я предлагаю добавить несколько операторов console.log() в разных точках, чтобы узнать, как далеко вы доберетесь.

EDIT: Я перепутал URL, который вы вызываете, но указанные выше подсказки все еще действительны. Но вы также должны обработать возможное состояние errfs.readFile(...).

Вы также можете добавить некоторые операторы журнала в свой dbajax.html, чтобы просмотреть прогресс в консоли разработчика вашего браузера (вы можете открыть его, нажав F12).

+0

Здравствуйте, ОК, но как вы думаете, логика моего кода верна? Я довольно новичок в node.js, поэтому я не уверен, что это правильный путь или нет. – user1042911

+0

Как правило, ваша логика в порядке. Я думаю, вы только дали отрывок из вашего заявления. Некоторые части как 'submittedPost'seem не нужны. И если вы действительно не хотите использовать экспресс и другие полезные фреймворки, тогда это путь. – Marc

+0

Я изменяю тип данных на «текст», и он работает внезапно. Как так? Тип: 'get', dataType: 'text', jsonp: 'text', – user1042911