У меня возникли проблемы с функцией Lua. Я могу установить возвращаемое значение sendAction в строку («test»), и она вернется должным образом. Однако я не могу заставить переменную «данных» возвращаться, поскольку она всегда возвращает нуль. Что я делаю не так?Функция lua не возвращает данные
local json = require("json");
local action = {};
local action_mt = { __index = action }
---------PRIVATE FUNCTIONS------------
function action:sendAction(values, networkListener)
local data,pos,msg = "";
local params = {}; params.body = "";
for key,value in pairs(values) do
params.body = params.body .. "&" .. key .."=" .. value
end
local function networkListener(event)
if (event.isError) then
print("Network error!");
else
data,pos,msg = json.decode(event.response);
if (data.errors.count > 0) then
print("errors");
end
end
return data;
end
network.request("http://127.0.0.1/action.php", "POST", networkListener, params)
end
------PUBLIC FUNCTIONS------
function action:new(action)
local newAction = { action = action };
return setmetatable(newAction, action_mt)
end
function action:createSession()
local data = action:sendAction({ action = "createSession" });
print(data);
end
return action;
Этот код по-прежнему возвращает nil, и я знаю, что есть правильный ответ, потому что я могу распечатать исходный ответ и получить json с сервера, как ожидалось. – user3342210
Обновление: я изменил эту часть: onSendActionComplete (true, data); toSendActionComplete (true, json.decode (event.response)); По-видимому, это работает по какой-то причине, я предполагаю, что объем данных? (Обновление: Да, это была область данных, я переместил var в главный блок прослушивателя событий, и теперь он работает. Спасибо большое @Mud – user3342210