首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTML输入传递给JavaScript到BaaS

将HTML输入传递给JavaScript到BaaS
EN

Stack Overflow用户
提问于 2015-06-03 22:30:26
回答 1查看 74关注 0票数 0

我试图将用户的HTML输入字段值存储在BaaS (Backendless)中。使用.js脚本中的固定值并在页面加载时执行它,我能够成功地将字段(apiEndpointapiSecretkeyemailAddress)存储到Request表中:

代码语言:javascript
复制
function Request(args) {
    args = args || {};
    this.apiEndpoint = args.apiEndpoint || "";
    this.apiSecretkey = args.apiSecretkey || "";
    this.emailAddress = args.emailAddress || "";
}

var requestObject = new Request( {
apiEndpoint: "https://api.foo.com/",
apiSecretkey: "foo",
emailAddress: "foo@foo.com",
});

var savedRequest = Backendless.Persistence.of( Request ).save( requestObject );

我想要做的是存储变量(单击按钮而不是页面加载)。下面是我非常基本的HTML表单:

代码语言:javascript
复制
<head>
    <script src="libs/backendless.js"></script>
    <script src="js/app.js"></script>
</head>

<body>
    <form>
        <input type="text" name="endpoint"><br>
        <input type="text" name="secretkey"><br>
        <input type="text" name="email"><br>
        <input type="button" onclick="________" value="Submit">
    </form>
</body>

和带有变量的app.js

代码语言:javascript
复制
function Request(args) {
    args = args || {};
    this.apiEndpoint = args.apiEndpoint || "";
    this.apiSecretkey = args.apiSecretkey || "";
    this.emailAddress = args.emailAddress || "";
}

var endpoint = document.getElementsByName("endpoint").value,
    secretkey = document.getElementsByName("secretkey").value,
    email = document.getElementsByName("email").value;

var requestObject = new Request( {
apiEndpoint: endpoint,
apiSecretkey: secretkey,
emailAddress: email,
});

var savedRequest = Backendless.Persistence.of( Request ).save( requestObject );

当我单击Submit按钮时不会发生任何事情。以我的形式,我尝试过onclick=""Request()JavaScript: Request()Backendless.Persistence.of( Request ).save( requestObject );

我做错了什么?感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 23:48:11

如果您粘贴的JavaScript是页面上唯一的JavaScript,那么很可能都是在页面加载时执行的(这就是硬编码值工作的原因,它们在加载时就存在)。您需要的是在单击submit按钮时执行代码。您可以通过为onsubmit属性赋值来实现这一点,然后在JavaScript中创建一个名为sendData的函数。

编辑

看起来,我忘记包含对您的BaaS的实际调用,从而搞砸了函数。这里有一个片段,演示了应该如何工作。您肯定不希望将onclick处理程序分配给提交按钮。

而且,getElementsByName返回一个NodeList而不是Element,因此没有定义value属性,您必须遍历列表或访问第一个元素。如果您不介意使用ids,getElementById会更好。

代码语言:javascript
复制
function Request(args) {
    args = args || {};
    this.apiEndpoint = args.apiEndpoint || "";
    this.apiSecretkey = args.apiSecretkey || "";
    this.emailAddress = args.emailAddress || "";
}


function sendData () {
  var endpoint = document.getElementById("endpoint").value,
    secretkey = document.getElementById("secretkey").value,
    email = document.getElementById("email").value;

  var requestObject = new Request( {
    apiEndpoint: endpoint,
    apiSecretkey: secretkey,
    emailAddress: email,
  });
  alert('apiEndpoint = ' + requestObject.apiEndpoint + '\n' +'apiSecretkey = ' + requestObject.apiSecretkey + '\n' + 'emailAddress = ' + requestObject.emailAddress);
  //var savedRequest = Backendless.Persistence.of( Request ).save( requestObject );
}
代码语言:javascript
复制
<body>
    <form onsubmit="sendData()">
        <input type="text" id="endpoint"><br>
        <input type="text" id="secretkey"><br>
        <input type="text" id="email"><br>
        <input type="submit" value="Submit">
    </form>
</body>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30631936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档