Post 表单值到 SQL 适配器工作灯 V6

Post Form Value to SQL adaper Worklight V6

我如何 POST 将表单中的所有值都发送到 sql 适配器以将表单值插入数据库?

  1. 我有一个带有 onclick 事件的表单

  2. 我有一个适配器设置,其中包含一个添加用户信息的过程:

    function addUserInfo(firstname, lastname, email, state, province, zippostal, phonenumber, streetnamenumber, city) {
        return WL.Server.invokeSQLStatement({
            preparedStatement : addStatement,
            parameters : [firstname, lastname, email, state, province, zippostal, phonenumber, streetnamenumber, city]
        });
    }
    

我可以得到一些如何连接两者的 advice/an 示例吗?

以下答案提供了一个端到端的方案,用于将取自 HTML 的值插入数据库:


您需要从 HTML 获取输入并将其用作 WL.client.invokeProcedure 的参数:

function loadFeeds1(){
    var invocationData = {
        adapter:"car2",
        procedure:"getuser",
        parameters:[$('#carnum').val(),$('#details').val()]
    };

    WL.Server.invokeProcedure(invocationData,{
        onSuccess :loadFeedsSuccess1,
        onFailure :loadFeedsFailure1,
    });
}

HTML:

<h1>Test Insert Into Database</h1>
<input type="text" id="value1" placeholder="value1"/><br/>
<input type="text" id="value2" placeholder="value2"/><br/>
<input type="button" value="Insert values to database" onclick="insertValuesToDB();"/>

main.js:

function insertValuesToDB() {
    var invocationData = {
        adapter: 'insertValuesAdapter',
        procedure: 'insertValuesProcedure',
        parameters: [$('#value1').val(), $('#value2').val()]
    };

    WL.Client.invokeProcedure(invocationData, {onSuccess: insertSuccess, onFailure: insertFailure});
}

function insertSuccess() {
    alert("success");
}

function insertFailure() {
    alert("failure");
}

适配器XML:

...
...
<connectivity>
    <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceDefinition>
            <driverClass>com.mysql.jdbc.Driver</driverClass>
            <url>jdbc:mysql://localhost:3306/worklight_training</url>
            <user>Worklight</user>
            <password>Worklight</password> 
        </dataSourceDefinition> 
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="5" />
</connectivity>

<procedure name="insertValuesProcedure"/>
...
...

适配器实现:

var insertValuesProcedureStatement = WL.Server.createSQLStatement("INSERT INTO users(userId, firstName, lastName, password) VALUES (?,?, 'someLastName', 'somePassword')");

function insertValuesProcedure(value1,value2) {
    return WL.Server.invokeSQLStatement({
        preparedStatement : insertValuesProcedureStatement,
        parameters : [value1,value2]
    });
}