使用 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 的详细信息
更新:
另请注意,如果您配置了任何安全测试,不同于 "wl_unprotected"(您的适配器是 100% public,请小心!!)您可能需要额外的步骤来处理身份验证。
如果您有一个默认适配器,没有任何安全测试集,您可能会在您的第一个请求中收到 401 未经授权,并且在 401 的 body 中您可能会发现 WL-Instance-ID 属性,您必须连同新请求一起发送才能获得使用它的授权。
更新 2:
Worklight/MobileFirst 平台不启用 CORS(因此您无法 "naturally" 使用 ajax 从外部网页调用适配器)。可以通过使用网关(可能是 IHS)将 header "Access-Control-Allow-Origin" 添加到所有适配器响应来解决这个问题。请注意,您正在处理安全问题,因此请确保您知道自己在做什么。
有人可以举例说明如何使用 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 的详细信息
更新: 另请注意,如果您配置了任何安全测试,不同于 "wl_unprotected"(您的适配器是 100% public,请小心!!)您可能需要额外的步骤来处理身份验证。
如果您有一个默认适配器,没有任何安全测试集,您可能会在您的第一个请求中收到 401 未经授权,并且在 401 的 body 中您可能会发现 WL-Instance-ID 属性,您必须连同新请求一起发送才能获得使用它的授权。
更新 2: Worklight/MobileFirst 平台不启用 CORS(因此您无法 "naturally" 使用 ajax 从外部网页调用适配器)。可以通过使用网关(可能是 IHS)将 header "Access-Control-Allow-Origin" 添加到所有适配器响应来解决这个问题。请注意,您正在处理安全问题,因此请确保您知道自己在做什么。