TypeError:不能在'中使用'运营商搜索' SUPPORT_WL_SERVER_CHANGE'在null

时间:2015-02-06 16:49:41

标签: javascript firefox ibm-mobilefirst worklight-adapters

  • 更新 - 我最初发布了firefox错误,Chrome错误消息更有用,所以我更新了它的名字

(firefox) - 无效' in' worklight.js中的操作数配置文件

(chrome) - TypeError:不能在'中使用'运营商搜索' SUPPORT_WL_SERVER_CHANGE'在null

我见过类似的问题,没有人回答,也没有提供重现结果所需的所有代码。

我使用firefox和chrome获得了不同的消息。所以我更新了标题以显示两者。

重现:

在该项目中创建一个新的worklight项目和应用程序 创建一个新的HTTP适配器,将其命名为myRESTAdapter

将index.html替换为:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>angular_test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=0.5, minimum-scale=2.0, user-scalable=0">
    <script>window.$ = window.jQuery = WLJQ;</script>
<script>
        function mobGmapLatLng(pAddress) {
            var invocationData = {
                    adapter : 'myRESTAdapter',
                    procedure : 'getGmapLatLng',
                    parameters : [ pAddress ]
                };

            WL.Client.invokeProcedure(invocationData,{
                onSuccess : function(result){
                    console.debug("good");
                    var httpStatusCode = result.status;
                    if (200 == httpStatusCode) {
                        var invocationResult = result.invocationResult;
                        var isSuccessful = invocationResult.isSuccessful;
                        if (true == isSuccessful) {
                            var lat = invocationResult.lat;
                            var lng = invocationResult.lng;
                            alert("Success: lat=" + lat + " lng=" + lng);
                        }
                        else {
                            alert("Error. isSuccessful=" + isSuccessful);
                        }                    
                    }
                    else {
                        alert("Error. httpStatusCode=" + httpStatusCode);
                    }
                },
                onFailure : function(result){
                    console.debug("bad");
                }
            });
        }

</script>   
</head>
<body>
    Hello Worklight with getGmapLatLng
<p>
<button onclick="mobGmapLatLng( '11501 Burnet Rd, Austin, TX, USA' )">Austin, TX, USA</button>
</p>
<p>
<button onclick="mobGmapLatLng( '4250 South Miami Boulevard, Durham, NC, USA' )">Durham, NC, USA</button>
</p>
<p>
<button onclick="mobGmapLatLng( '1681 Route des Dolines, 06560 Valbonne, France' )">Valbonne, France</button>
</p>
<p>
<button onclick="mobGmapLatLng( 'Shefayim 60990, Israel' )">Shefayim, Israel</button>
</p>
<p>
<button onclick="mobGmapLatLng( '399 Ke Yuan Lu, Shanghai, China' )">Shanghai, China</button>
</p>                        
</body>
</html>

接下来在适配器中将myRESTAdapter.xml替换为:

<?xml version="1.0" encoding="UTF-8"?>

<wl:adapter name="myRESTAdapter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:wl="http://www.ibm.com/mfp/integration"
xmlns:http="http://www.ibm.com/mfp/integration/http">

<displayName>myRESTAdapter</displayName>
<description>myRESTAdapter</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>http</protocol>
        <domain>http://maps.googleapis.com</domain>
        <port>80</port> 
        <connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
        <socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
        <maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
        <!-- Following properties used by adapter's key manager for choosing specific certificate from key store  
        <sslCertificateAlias></sslCertificateAlias> 
        <sslCertificatePassword></sslCertificatePassword>
        -->     
    </connectionPolicy>
</connectivity>

<procedure name="getGmapLatLng"/>

</wl:adapter>

并将myRESTAdapater-impl.js替换为:

function getGmapLatLng(pAddress) {
var input = {
    method : 'get',
    returnedContentType : 'json',
    path : 'maps/api/geocode/json',
    parameters : {
        'address' : 'plaza 3 one nationwide blvd columbus oh',
        'sensor' : 'false'   // hard-coded
    }
};

var response = WL.Server.invokeHttp(input);

// Extract latitude and longitude from the response.
var type = typeof response; 
if ("object" == type) {
    if (true == response["isSuccessful"]) {

        // Drill down into the response object.
        var results = response["results"];
        var result = results[0];
        var geometry = result["geometry"];
        var location = geometry["location"];

        // Return JSON object with lat and lng.
        return location;
    } 
    else {
        // Returning null. Web request was not successful.
        return null;
    }
} 
else {
    // Returning null. Response is not an object.
    return null;
}
}

右键单击index.html并选择Run As-&gt;预习 打开firebug,这样你就可以看到错误消息:无效&#39; in&#39; worklight.js中的操作数配置文件 单击其中一个按钮,您将在firebug中看到错误消息

***注意:我必须进行一些更改,这样才能在公司防火墙后面工作,我认为应该粘贴并运行,但我目前无法对其进行测试。

**注意2:我几乎是肯定的,我之前已经成功运行了这个确切的代码,我无法弄清楚为什么有时候我会收到错误,有时它会作品

使用worklight 6.3.0进行测试 适配器代码正常运行,并在我使用run as-&gt; invoke mobilefirst procedure

调用它时返回正确的数据

在worklight.js中的行号:5059

2 个答案:

答案 0 :(得分:2)

我重建了这个项目,并且在查看工作项目之间的差异时让它工作了,我的这是原始代码中缺少的代码部分:

<script>
    var wlInitOptions = {
    };

    if (window.addEventListener) {
        window.addEventListener('load', function() {      
            WL.Client.init(wlInitOptions); }, false);
    } else if (window.attachEvent) {
        window.attachEvent('onload',  function() { 
            WL.Client.init(wlInitOptions); });
    }
</script>

答案 1 :(得分:0)

我注意到这篇文章并且实际上正在为一个正在滚动的iFix保持警惕:(PI63389)。 该行中的此类TypeError不应再停止该应用程序。