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

时间:2015-03-25 18:45:06

标签: ajax cors ibm-mobilefirst worklight-adapters

有人可以举例说明如何使用AJAX调用在worklight中调用和接收来自SQL适配器的响应吗?我使用的是worklight 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
                });

2 个答案:

答案 0 :(得分:2)

我的理解是你只想从某个客户端使用Ajax调用Adapter程序。

和其他问题一样吗?

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%公开,小心!)你可能需要额外的步骤来处理身份验证。

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

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

答案 1 :(得分:1)

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

您仍然可以使用常规的AJAX请求 - 但那些赢得/不能是Worklight适配器发送的请求。

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

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

也许您不应该在环境级别保护应用程序,而是在程序级别保护应用程序(在适配器XML中设置适配器过程的安全性测试,而不是在application-descriptor.xml中的环境上)。

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