[英]ajax GET call with node.js / express server
我正在尝试编写一个小的 ajax 实时搜索 node.js。 首先这里是我的客户端代码:
$('#words').bind('keyup', function(){
getMatchingWords($('#words').val(), function (data){
console.log('recieved data');
console.log(data);
$('#ajaxresults').show();
});
});
function getMatchingWords(value, callback) {
$.ajax('http://127.0.0.1:3000/matchword/' + value + '/', {
type: 'GET',
dataType: 'json',
success: function(data) { if ( callback ) callback(data); },
error : function() { if ( callback ) callback(null); }
});
}
这是我的服务器端路由:
app.get('/matchword/:value', function(req, res) {
console.log(req.params.value);
res.writeHead(200, {'content-type': 'text/json' });
res.write( JSON.stringify({ test : 'test'}) );
res.end('\n');
});
它有效,但我没有收到任何数据。 回调 function 中的数据始终为 null。 所以我做错了什么? 谢谢帮助
改变
$.ajax('http://127.0.0.1:3000/matchword/' + value + '/', {
至
$.ajax('/matchword' + value + '/', {
您发出 $.ajax() 请求的 URL 是什么? 如果包含该客户端 JS 的页面也未从 127.0.0.1:3000 加载,则您看到的错误是由于 AJAX 请求的同源要求所致。
嘿,迟到总比没有好……
我正在查看您的问题,因为我还尝试将简单的实时搜索与 express.js 后端放在一起。
首先,我将您的 url 放入局部变量中。 因为我不认为那是你的问题。 特别是如果您的 express / node 日志显示 200 响应。 然后 url 很好...
看来您的 function 没有返回数据(正确吗?)如果是这样试试这个。
var search_url = "..."// your url
function getMatchingWords(value, callback) {
$.ajax(search_url, {
type: 'GET',
dataType: 'json',
success: function (data, textStatus, jqXHR) {
var returned_data = data;
console.log("returned_data ="+returned_data);//comment out or remove this debug after test
callback(returned_data);
},
error: function( req, status, err ) {
console.log( 'something went wrong', status, err );
}
});
}
您可能还需要根据设置添加/修改标题...
headers : { Authorization : auth },
type: 'GET',
dataType: 'json',
crossDomain:true,
auth 变量是代码中其他地方的编码身份验证对(如果您的 web 服务需要某种身份验证...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.