【问题标题】:Parse.com Adding Cloud code to html buttonsParse.com 将云代码添加到 html 按钮
【发布时间】:2015-06-02 16:55:27
【问题描述】:

我正在使用我在 parse.com 上创建的数据库在本地测试一些函数,并且这些函数完全按照预期运行。我现在正尝试将这些函数放在云代码上,以减少发送到解析的请求数量,并在云代码中而不是在本地运行查询。无论出于何种原因,当我将这些函数转换为云代码时,它们都无法正常工作。另外,我如何在 html 中制作一个可以在云代码中运行函数的按钮?

在云代码之前,我的 html 按钮是这样的:

<button type="button" onclick="authenticate()">Log-In</button>

如何使用如下所示的云代码创建该按钮:

Parse.Cloud.define("authenticate()", function(request, response) {
    var myname = document.getElementById("username").value;
    var mypass = document.getElementById("psswd").value;

    Parse.User.logIn(myname, mypass, {
        success: function(user) {
            // Do stuff after successful login.
             if(myname == "test1" || myname == "test2"){
                window.location.href="itSplash.html";
            }
            else{
                window.location.href="ticketRequest.html";
            }           
        }, 
        error: function(user, error) {
            // The login failed. Check error to see why.
            alert("Failed to login: " + error.message);
        }
    });
});

澄清如果用户名匹配 test1 或 test2,if 语句只指示登录到它Splash,如果是其他任何人,则为 ticketRequest。我们为不同的用户提供单独的页面。此外,如果我将其创建为普通函数 authenticate(),则该函数在本地工作。当我将其转换为如上所示的云代码时,它将无法工作。我创建了一个单独的函数名称 runAuthenticate() ,其中有一个 Parse.Cloud.run 调用,它在那里不起作用。我得到的只是一个错误,说不能在该对象上使用定义。有什么帮助吗?

【问题讨论】:

  • 您是否检查了错误日志以查看它告诉您的内容未定义,您是否尝试过从 curl 运行云功能?
  • 我在调试器模式下运行了代码。据我所知,它甚至不会运行任何功能,所以一切仍然未定义。在它运行任何东西之前,它会在 Parse.Cloud.define 部分引发错误,说明“无法在此对象上使用定义”。我测试了 Parse.com 上的示例 hello world 云代码,它运行良好,但上面代码的某些内容不起作用。我从我用来在本地运行它的 js 文件中复制并粘贴了它。

标签: javascript parse-platform parse-cloud-code


【解决方案1】:

您可以使用 Parse.Cloud.run 将 HTML 按钮与云代码函数链接。

看看 Parse Cloud 代码 documentations.

这就是您可以从 javascript 调用云代码的方式。

Parse.Cloud.run('hello', {}, {
    success: function(result) {
        // result is 'Hello world!'
    },
    error: function(error) {
        //  Error while running cloud code
    }
});

正如您所写,您可以尝试在 HTML 按钮上调用 javascript 方法,然后调用 Parse.Cloud.run 方法。

【讨论】:

    【解决方案2】:

    首先,您无法在云代码中访问 documentwindow,因此您需要重新考虑您的来源。

    另外,将用户详细信息发送到云代码是不合适的,您应该使用SDK登录网页,然后使用SDK触发云代码,它将发送用户和身份验证详细信息.

    因此,您的 authenticate 函数在云代码中的整个前提实际上并不奏效。

    这并不意味着您不应该使用云代码,只是您不应该将它用于此目的。您谈论进行查询,但实际上在您显示的代码中没有任何查询 - 但这种事情更有可能移动到云代码中......

    【讨论】:

    • 我所寻求的帮助/建议更符合我设置云代码的方式会导致它无法工作的原因。文档/窗口访问是否导致错误发生?你是对的,函数中没有查询。我还有其他几个我没有列出的使用查询的函数。这些要复杂得多,所以我想在尝试之前尝试让这个更简单的功能正常工作。另外,我仍然不知道如何在 HTML 按钮上运行云代码。如果我能让它不显示错误并学习如何在 html 按钮上使用 Parse.Cloud.run,那就太好了
    • 另外,感谢您对文档和窗口的输入。我很犹豫是否将此功能添加到云代码中,因为它不会大大提高性能(我猜)。我只是想看看我是否可以让我的一个更简单的函数在云代码中成功运行,但我什至无法在出现错误之前加载页面。
    • 在函数名中包含() 可能是个问题。那么是的 documentwindow 是未定义的,所以你会在那里得到错误。 Parse 有一个错误日志,你可以查看它,它会告诉你问题。
    • 请记住,您可以在云代码中添加一个函数,该函数只返回一个字符串并将其用于测试...让 html 按钮运行一个 JS 函数并让该函数使用 Parse.Cloud.run 来执行云编码并处理响应。
    • 所以我可能应该将其更改为我的 Parse.Cloud.define 包含我所有实际代码的位置,然后创建一个仅执行 Parse.Cloud.run 的函数,然后将该函数链接到按钮?即使没有 () 它仍然会导致错误,但我会尝试省略窗口和文档功能,看看是否会改变任何东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多