express中ajax请求第一次undefined后续均成功,但结果是上一次的结果而非该次请求的结果

刚开始用node+express,使用了静态页面请求ajax出现问题,目前结果来看是:1.第一次请求不进入success,打印undefined;2.第二次请求开始,进入success,打印第一次请求结果;3.第三次请求打印第二次请求结果,但查看后台传输值发现,传输过去的值没有问题,接收的值出现问题
请教这个问题怎么解决?
app.js代码是:
varmysql=require('mysql');
varexpress=require('express');
varapp=express();
varsettings=require('./build/db');
app.use(express.static('./src'));
//连接数据库
varconnection=mysql.createConnection(settings.db);
connection.connect(function(err){
if(err){
console.log('[query]-:'+err);
}else{
console.log('[connectionconnect]succeed!');
}
});
//查询
vararr=[];
//把搜索值输出
app.get('/getname',function(req,res){
varselectSQL='selectlinknamefrom`mkln_server_contract`';
connection.query(selectSQL,function(err,rows){
if(err)throwerror;
for(vari=0;iarr[i]=rows[i].linkname;
}
console.log(arr[1]);
});
res.send(arr);
});
app.post('/getid',function(req,res){
varselectSQL='selectidfrom`mkln_server_contract`';
connection.query(selectSQL,function(err,rows){
if(err)throwerror;
for(vari=0;iarr[i]=rows[i].id;
}
console.log(arr[1]);
});
res.send(arr);
});
//关闭连接
//connection.end();
app.listen(3000);
html
PageTitle
获取联系人
获取ID
js
$(function(){
$("#name").click(function(){
$.ajax({
type:"GET",
url:"getname",
success:function(data){
console.log(data[1]);
},
error:function(err){
console.log("error:"+err);
}
});
});
$("#uid").click(function(){
$.ajax({
type:"POST",
url:"getid",
success:function(data){
console.log(data[1]);
},
error:function(err){
console.log("error:"+err);
}
});
});
});
慕婉清6462132
浏览 442回答 2
2回答

皈依舞

已解决,将res.send(arr)放到connection.query()中即可避免。出现的原因应当是该查询是异步执行,第一次res.send时,arr值未更改。不过这个依次延续的原因,不是很懂。

汪汪一只猫

不过这个依次延续的原因,不是很懂。arr是一个全局变量,第一次你同步返回,arr为空,但返回后query继续执行,往arr添加数据。这就是依次延续的原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript