我是lua和node js的新手,我正在尝试将我正在处理的移动应用程序连接到服务器。问题是它连接到服务器但我试图传递的数据丢失或者它没有到达服务器。 关于我正在做什么的错误的任何想法?
this is my lua code to connect to the server
local function store ()
local headers = {}
headers["Content-Type"] = "application/x-www-form-urlencoded"
headers["Accept-Language"] = "en-US"
local body = "fname="..fname
local params = {}
params.headers = headers
params.body = body
print(body)
print(headers)
print(params.body)
print(params.headers)
network.request( "http://192.168.56.2:8888", "POST", networkListener, params )
end
local function networkListener( event )
if ( event.isError ) then
print( "Network error!")
else
print ( "RESPONSE: " .. event.response )
local serializedString = json.decode( event.response )
print(serializedString)
--data = json.decode(serializedString)
--print(serializedString.student[1])
end
end
`
This is the code for the simple server I am trying to send a request to
var express = require('express');
var app = express();
var morgan = require('morgan');
var consolidate = require('consolidate');
var bodyparser = require('body-parser');
var parser = require('luaparse');
////////////////////////////////////////////////////////////////////////////////
app.listen(8888,function() {console.log('Server Running!');});
////////////////////////////////////////////////////////////////////////////////
app.set('views', __dirname + '/views');
app.engine('html', consolidate.nunjucks);
app.use(morgan('dev'));
app.use(bodyparser.urlencoded({ extended: true }));
app.use('/static', express.static(__dirname + '/static'));
////////////////////////////////////////////////////////////////////////////////
app.get('/', function(req, res) {
res.render('index.html');
});
app.post('/', function(req, res) {
var fname = req.fname;
var lname = req.body.lastname;
console.log("it went in");
console.log(req.body.fname);
console.log(req.body);
console.log(req.header);
console.log("nahuman");
res.render('index.html');
});
////////////////////////////////////////////////////////////////////////////////
答案 0 :(得分:1)
您的代码没问题,只是您的networkListener()
函数后,您的网络监听器store()
似乎被声明为。 Lua无法访问之后声明的内容,除非是正向声明的。所以,lua找不到监听器,即使出现错误也不会被调用。应该在store()
函数之前声明此函数,以便它可以访问它,如下所示:
local function networkListener(event)
...
end
local function store()
...
end
那,或者你可以转发声明它,有点像这样:
local networkListener = nil -- This forward declaration
local function store()
...
end
networkListener = function()
...
end
here。我知道情况就是这样,因为您提供了实际代码订单的屏幕截图。在尝试解决方案后,您始终可以使用调试器查看一切是否正常。我推荐使用IDE Here is more info about lua forward declaration。