android - 电晕函数和变量

标签 android ios mysql lua coronasdk

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

数据获取正确,但我可以在函数外访问它。

获取数据的函数:

function loginCallback(event) 
if ( event.isError ) then
    print( "Network error!")
else
    print ( "RESPONSE: " .. event.response )
    local data = json.decode(event.response) 
        if data.result == 200 then
            media = data.media_plats 
            print("Data fetched") 
        else
            print("Something went wrong")
        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
        -- make JSON call to the remote server
        local URL = "http://www.mywebsite.com/temp_files/json.php"
        network.request( URL, "GET", loginCallback ) 
        print(data.media_plats) -- returns nil
    end 
end

提前致谢。

最佳答案

  1. 您的回调是异步调用的,因此 network.request 将立即返回,并且可能在请求结果返回之前返回。

    如果您想使用data.media_plats(甚至打印),则应在回调内完成/触发。

  2. 数据在回调中声明为 local,因此它在函数外不可用。您可以删除 local 以使 data 成为全局变量,但这也许就是为什么您有 media = data.media_plats 并使用 print 在函数外部打印的原因(媒体) 可能就是您想要的。

.

您可以尝试这样的事情作为开始。它发送请求,回调触发现场的一个方法,用新到达的数据更新自己。通常,您会使用一些占位符数据设置 View ,并通过某种进度指示器让用户知道您正在等待数据到达。

免责声明:我不使用 Corona。

-- updates a scene when media arrives
local function updateWithResponse(scene, media)
    local sceneGroup = self.view
    local phase = event.phase
    print(media)
    -- display using show after
end

--makes a request for data
function scene:show( event )
    if phase == "will" then
    elseif phase == "did" then
        -- make JSON call to the remote server
        local URL = "http://www.mywebsite.com/temp_files/json.php"
        network.request( URL, "GET", responseCallback(self))
    end
end

-- when media arrives, calls function to update scene.
local function responseCallback(scene)
    return function ( event )
        if ( event.isError ) then
            print( "Network error!" )
        elseif ( event.phase == "ended" ) then
            local data = json.decode(event.response) 
            if data.result == 200 then
                print("Data fetched")
                -- finish setting up view here. 
                scene:updateWithResponse(data.media_plats)
            else
                print("Something went wrong")
            end
        end
    end
end

关于android - 电晕函数和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678577/

相关文章:

php - 将分数从 AS3 提交到 PHP/SQL - #Error 2101

php - array_sum 以字符串形式返回值的总和

php - 如何从 html 输入添加变量并在从 mysql 数据提取的 url 中显示

android - 如何在android中迁移新表的 Realm ?

java - 与其他应用程序共享图像时共享操作栏按钮崩溃

android - 使用 C++ 创建 UDP 服务器以嵌入跨平台 iOS 和 Android 应用程序

ios - 如何在 ios swift 4 中获取可用的 wifi 网络

android - 如何检查sim是否在android中处于 Activity 状态

android - onActivityCreated 总是被调用?

ios - UICollectionView 拖拽移除半透明单元格