[英]Parse JSON returned from NODE.js
我正在使用jQuery對Node.js進行AJAX調用以獲取一些JSON。 JSON實際上是在Node調用的Python child_process中“構建”的。 我看到JSON正在傳遞回瀏覽器,但是我似乎無法解析-盡管我可以從YQL查詢中解析JSONP。
進行呼叫的網頁與Node在同一服務器上,因此在這種情況下,我認為我不需要JSONP。
這是代碼:
index.html(摘要)
function getData() {
$.ajax({
url: 'http://127.0.0.1:3000',
dataType: 'json',
success: function(data) {
$("#results").html(data);
alert(data.engineURL); // alerts: undefined
}
});
}
server.js
function run(callBack) {
var spawn = require('child_process').spawn,
child = spawn('python',['test.py']);
var resp = '';
child.stdout.on('data', function(data) {
resp = data.toString();
});
child.on('close', function() {
callBack(resp);
});
}
http.createServer(function(request, response) {
run(function(data) {
response.writeHead(200, {
'Content-Type':
'application/json',
'Access-Control-Allow-Origin' : '*' });
response.write(JSON.stringify(data));
response.end();
});
}).listen(PORT, HOST);
test.py
import json
print json.dumps({'engineName' : 'Google', 'engineURL' : 'http://www.google.com'})
AJAX調用返回后,我執行以下操作:
$("#results").html(data);
並在網頁上打印以下內容:
{“engineURL": "http://www.google.com", "engineName": "Google"}
但是,當我嘗試如下解析JSON時:
alert(data.engineURL);
我不確定。 我幾乎在想我實際上並沒有傳遞回JSON對象,但是我不確定。
有人可以建議我在Python中構建JSON,從Node傳遞回JSON還是在網頁上無法正確解析JSON時做錯了嗎?
謝謝。
我幾乎在想我實際上並沒有傳遞回JSON對象,但是我不確定。
是的,ajax響應是一個字符串。 要獲取一個對象,您必須將該JSON字符串解析為一個對象。 有兩種方法可以做到這一點:
data = $.parseJSON(data);
或者,建議的方法是在$.ajax
調用中指定dataType: 'json'
。 這樣,jQuery會在將響應傳遞給回調之前隱式調用$.parseJSON
。 另外,如果您使用$.get
,則可以將其替換為$.getJSON
。
也:
child.stdout.on('data', function(data) {
resp = data.toString();
// ^ should be +=
});
data
事件的回調接收數據塊,您應該將其與已接收的數據連接起來。 您可能還沒有遇到任何問題,因為您的JSON很小,並且大多數時候都在一個塊中,但不要依賴它,請進行適當的串聯以確保您的數據包含所有塊,而不僅僅是最后一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.