1
我遇到了Lua函數的問題。我可以將sendAction的返回值設置爲一個字符串(「test」),並且它將正確返回。但是我無法得到「數據」的變量返回,因爲它總是返回nil。我究竟做錯了什麼?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;
此代碼仍然返回零,我知道有一個正確的響應,因爲我可以打印原始響應,並從服務器得到預期的JSON。 – user3342210
更新:我改變了這部分:onSendActionComplete(true,data);到onSendActionComplete(true,json.decode(event.response));這似乎是有原因的,我假設是因爲數據的範圍? (更新:是的,這是數據的範圍,我將var移動到事件監聽器的主要區塊,現在可以工作。非常感謝@Mud – user3342210