Corona 函数和变量

我是新手,正在尝试从 MySQL 数据库中提取数据并在应用程序中使用该数据。

数据能正确获取,但我无法在函数之外访问它。

获取数据的函数:

function loginCallback(event)
if ( event.isError ) then
    print( "网络错误!")
else
    print ( "RESPONSE: " .. event.response )
    local data = json.decode(event.response)
        if data.result == 200 then
            media = data.media_plats
            print("数据获取成功")
        else
            print("发生错误")
        end
    end
return true
end

然后我想在此处访问它:

function scene:show( event )
    local sceneGroup = self.view
    local phase = event.phase

    if phase == "will" then
    elseif phase == "did" then
        -- 向远程服务器进行 JSON 请求
        local URL = "http://www.mywebsite.com/temp_files/json.php"
        network.request( URL, "GET", loginCallback )
        print(data.media_plats) -- 返回 nil
    end
end

提前感谢。

点赞
用户2726734
用户2726734
  1. 您的回调是异步调用的,因此“network.request”将立即返回,可能在请求结果返回之前。

如果要使用data.media_plats(甚至打印),应该在回调内部执行/触发。

  1. 在回调中声明的数据被声明为“local”,因此在函数外部不可用。您可以删除local以使数据成为全局变量,但这可能是您为什么有media = data.media_plats,因此在函数外部打印使用print(media)可能是您想要的。

你可以尝试像这样开始。它发送请求,回调在场景上触发一个方法,以新到达的数据更新自身。通常,您会使用一些占位数据设置视图,并使用某种进度指示器来让用户知道您正在等待数据到达。

免责声明:我不使用Corona。

` ``

  • 更新场景时媒体到达 本地函数(场景,媒体更新)
    local sceneGroup = self.view local phase = event.phase 打印(媒体)

    • 显示使用表演后 结束
  • 获取数据请求 功能场景:表演(事件) 如果阶段==“将”然后 如果阶段==“完成”,则

  • 当媒体到达时,调用更新场景的函数。 本地函数响应回调(场景) 回归函数(事件) 如果(事件。isError)然后 打印(“网络错误!”) else if(事件.阶段==“结束”)结束 本地数据= json.decode(事件.回应) 如果数据.结果== 200然后 打印(“数据获取”) - 在此处完成视图设置。 场景:updateWithResponse(data.media_plats) else 打印(“出了些问题”) 结束 结束 `

2015-02-23 17:13:08