2013-07-17 24 views
0

我試圖從node.js的中的NodeJS

這裏運行服務器端的我的代碼取回JSON查詢數據返回,從異步函數值是我的客戶方AJAX請求:

$(function() { 
    var values = $(this).serialize(); 
    $.ajax({ 
    url: '/querySearch', 
    type: 'post', 
    data: values, 
    success: function(msg){ 
     console.log(msg); 
    }, 
    error: function(){ 
     alert('failure'); 
    } 
    }); 
}); 

我serserside代碼:

app.post('/querySearch', function(req, res) { 
    var queryNumber = Number(req.body.queryNumber); 
    if (queryNumber == 1){ 
    executeQuery1(res, sendQueryResults); 
    } 
    else if (queryNumber == 4){ 
    executeQuery4(res, sendQueryResults); 
    } 
    else if (queryNumber == 6){ 
    executeQuery6(res, sendQueryResults); 
    } 
    else if (queryNumber == 7){ 
    executeQuery7(res, sendQueryResults); 
    } 
}); 

function executeQuery1(res, callback) { 
    var query = "" + 
    'query string'; 
    service.oneshotSearch(query, {}, function(err, results) { 
     if (err) { 
     console.log(err); 
     alert("An error occurred with the search"); 
     return; 
     } 
    callback(res, results); 
    }); 
    }); 

} 

function sendQueryResults(res, results) { 
    res.json(JSON.stringify(results)); 
    res.end(); 
} 

但是,目前,我的網頁甚至不會完成加載。我究竟做錯了什麼?

+0

發生了什麼事?當你提出請求時,螢火蟲/ devtools是什麼意思?有沒有服務器端錯誤? – dm03514

+0

你可以發佈sendQueryResults的代碼嗎? – ZimSystem

+0

POST請求沒有得到迴應。我已經使用上面的更多代碼更新了我的帖子。 – Narabhut

回答

1

你需要調用res.end()您已經以書面的數據之後。

0

好吧,有一個問題我看可能是一個問題是,res.json接受的對象,你傳遞一個字符串。嘗試:

res.json(results); 

或只是res.send

res.send(JSON.stringify(results)); 

或我認爲這會工作以及

res.send(results); 

所有這三個shouldh有同樣的結果。