使用 AJAX 调用 worklight SQL 适配器程序

Invoke worklight SQL adapter procedure using AJAX

有人可以举例说明如何使用 AJAX 调用在工作灯中调用和接收来自 SQL 适配器的响应吗?我正在使用工作灯 6.0

我在应用程序级别拥有安全性。我需要调用不需要身份验证的过程(例如:注册帐户),因此需要使用 AJAX

调用适配器

这是我的适配器:

var invocationData = {
                    adapter : 'UserInfo',
                    procedure : 'addUserInfo',
                    parameters : [ customerData.firstName,
                            customerData.lastName, customerData.email,
                            customerData.province, customerData.zipPostal,
                            customerData.phoneNumber, customerData.streetName,
                            customerData.streetNumber, customerData.country,
                            customerData.city ]
                };
                WL.Client.invokeProcedure(invocationData, {
                    onSuccess : insertUserSuccess,
                    onFailure : insertUserFailure
                });

Worklight(6.3 及更低版本)适配器只能与 Worklight Server 一起使用。 如果您计划使用 Worklight 适配器,则需要使用 Worklight 框架提供的 API - 问题中提到的代码。

您仍然可以使用常规 AJAX 请求 - 但这些请求不会t/cannot 发送给 to/by Worklight 适配器。

WLJQ.ajax( "some-URL" )
.done(function (data) {
    console.log(data);
});

如果目的地确实需要通过 Worklight Server,并且它不受任何领域的保护,那么问题是什么?发送请求。

也许您不应该在环境级别保护应用程序,而是在过程级别(在适配器 XML 中对适配器过程设置安全测试,而不是在应用程序-[=23 中的环境中设置安全测试=]).

也许您需要更好地解释您的具体情况...

我的理解是,您只想从某个客户端使用 Ajax 调用适配器过程。

和这个问题一样吗?

Calling Worklight adapter from external app

您可以在此处查看 HTTP API 的详细信息

http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.0.0/com.ibm.worklight.help.doc/admin/r_http_interface_of_the_prod_server.html?lang=en

更新: 另请注意,如果您配置了任何安全测试,不同于 "wl_unprotected"(您的适配器是 100% public,请小心!!)您可能需要额外的步骤来处理身份验证。

如果您有一个默认适配器,没有任何安全测试集,您可能会在您的第一个请求中收到 401 未经授权,并且在 401 的 body 中您可能会发现 WL-Instance-ID 属性,您必须连同新请求一起发送才能获得使用它的授权。

更新 2: Worklight/MobileFirst 平台不启用 CORS(因此您无法 "naturally" 使用 ajax 从外部网页调用适配器)。可以通过使用网关(可能是 IHS)将 header "Access-Control-Allow-Origin" 添加到所有适配器响应来解决这个问题。请注意,您正在处理安全问题,因此请确保您知道自己在做什么。