2017-08-24 16 views
0

専門家、コミュニケーション

は誰でもアレン・ブラドリーにより1768-EWEBモジュールのセットアップに成功しています?。私の問題の範囲は、EWEBモジュール内のディレクトリの下に保存されたxmlファイルを更新するWebページと、それがモジュールによって読み取られ、PLCに送り返されます。

このマニュアルは、これを実現する唯一の方法が「WebページフォームとPOSTハンドラ」を使用していることに非常に特有です。

マニュアルに提供されたコードのサンプルは、以下である:

<html> 
    <head> 
     <title> 
     Data View Javascript Demo Page 
     </title> 
     <script type="text/javascript"> 
    var xmlDoc; 
    var xmlhttp; 
    var DATAVIEW_URI = "/user/system/dataviews/Sample.xml"; 
    var DATAVIEW_NAMESPACE = "http://www.rockwellautomation.com/technologies/data_access/data_views/1.0/"; 
    var DATATYPES_NAMESPACE = "http://www.rockwellautomation.com/technologies/data_access/data_types/1.0/"; 
    var ARR_ACTIVEX = ["MSXML4.DOMDocument", "MSXML3.DOMDocument", "MSXML2.DOMDocument", "MSXML.DOMDocument", 
    "Microsoft.XmlDom"]; 
    var STR_ACTIVEX = ""; 
    var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1; 
    if (isIE) { 
    var bFound = false; 
    for (var i=0; i < ARR_ACTIVEX.length && !bFound; i++) { 
    try { 
    var objXML = new ActiveXObject(ARR_ACTIVEX[i]); 
    STR_ACTIVEX = ARR_ACTIVEX[i]; 
    bFound = true 
    } catch (objException) {} 
    } 
    if (!bFound) { 
    /* No DOM found, so throw a message and go back */ 
    alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please 
    upgrade your browser or load the appropriate patches to support XML."); 
    history.go(-1); 
    } 
    } else { 
    /* Not IE, so throw a message and go back */ 
    alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please 
    upgrade your browser or load the appropriate patches to support XML."); 
    history.go(-1); 
    } 
    xmlDoc = new ActiveXObject(STR_ACTIVEX) 
    xmlDoc.async = false; 
    xmlDoc.setProperty("SelectionLanguage", "XPath"); 
    if (STR_ACTIVEX.indexOf(".DOMDocument") != -1) { 
    xmlhttp = new ActiveXObject(STR_ACTIVEX.substring(0, STR_ACTIVEX.indexOf(".DOMDocument")) + 
    ".XMLHTTP"); 
    } else { 
    alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please 
    upgrade your browser or load the appropriate patches to support XML."); 
    history.go(-1); 
    } 
    function refresh_value() { 
    xmlDoc.load(DATAVIEW_URI); 
    xmlDoc.setProperty("SelectionNamespaces", "xmlns:dv='" + DATAVIEW_NAMESPACE + "'"); 
    document.getElementById("tagvalue").value = 
    xmlDoc.selectSingleNode("/dv:view/dv:tag[@name='TEST']/dv:value").childNodes[0].nodeValue; 
    } 
    function update_value() { 
    xmlDoc.selectSingleNode("/dv:view/dv:tag[@name='TEST']/dv:value").childNodes[0].nodeValue = 
    document.getElementById("tagvalue").value; 
    xmlhttp.Open("POST", DATAVIEW_URI, false); 
    xmlhttp.Send(xmlDoc); 
    refresh_value(); 
    } 
    </script> 
    </head> 
    <body onLoad="refresh_value();"> 
    TEST value is <input type="text" name="tagvalue" id="tagvalue" /><br/> 
    <input type="button" onClick="refresh_value();" value="Refresh"/><input type="button" 
    onClick="update_value();" value="Update"/> 
    </body> 
    </html> 

I(すなわち10上の)上記のコードをテストする場合、それは動作しません。フィールドフォームは空白です。マニュアルによると、それは125を表示する必要があります(ウィザードでxmlを作成する手順はすでに完了しています)。

誰もこのWebモジュールで作業する機会がありましたか?このデバイスは2004年から2006年のもので、サーバー側の言語として.aspのみを処理します。

ありがとうございます。

+0

私はそれをテキストファイルtest.htmlにコピーし、IE10でデバッグすると、refresh_value()関数が見つからないというエラーがスローされます。私はスクリプトの妥当性を疑うだろう。また、私はこの質問にhtmlでタグ付けすることをお勧めします – strongbutgood

答えて

1

生のコードをtest.htmlファイルにコピーして、IE10で開いても動作しません。スクリプト内に改行文字があり、それが無効になることが判明しました。特に、alert(" ")の文字列リテラルです。私は過去に、マニュアル、pdfs、ヘルプファイルからのコピーには望ましくない文字が含まれることがあるので、良いコードエディタでそれらを再確認していることが分かりました。また、インデントを設定すると、コード内で何が起きているかを簡単に確認することができます。

<html> 
<head> 
    <title> 
     Data View Javascript Demo Page 
    </title> 
    <script type="text/javascript"> 
    var xmlDoc; 
    var xmlhttp; 
    var DATAVIEW_URI = "/user/system/dataviews/Sample.xml"; 
    var DATAVIEW_NAMESPACE = "http://www.rockwellautomation.com/technologies/data_access/data_views/1.0/"; 
    var DATATYPES_NAMESPACE = "http://www.rockwellautomation.com/technologies/data_access/data_types/1.0/"; 
    var ARR_ACTIVEX = ["MSXML4.DOMDocument", "MSXML3.DOMDocument", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XmlDom"]; 
    var STR_ACTIVEX = ""; 
    var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1; 
    if (isIE) { 
     var bFound = false; 
     for (var i=0; i < ARR_ACTIVEX.length && !bFound; i++) { 
      try { 
       var objXML = new ActiveXObject(ARR_ACTIVEX[i]); 
       STR_ACTIVEX = ARR_ACTIVEX[i]; 
       bFound = true 
      } catch (objException) {} 
     } 
     if (!bFound) { 
      /* No DOM found, so throw a message and go back */ 
      alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please upgrade your browser or load the appropriate patches to support XML."); 
      history.go(-1); 
     } 
    } else { 
     /* Not IE, so throw a message and go back */ 
     alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please upgrade your browser or load the appropriate patches to support XML."); 
     history.go(-1); 
    } 
    xmlDoc = new ActiveXObject(STR_ACTIVEX) 
    xmlDoc.async = false; 
    xmlDoc.setProperty("SelectionLanguage", "XPath"); 
    if (STR_ACTIVEX.indexOf(".DOMDocument") != -1) { 
     xmlhttp = new ActiveXObject(STR_ACTIVEX.substring(0, STR_ACTIVEX.indexOf(".DOMDocument")) + ".XMLHTTP"); 
    } else { 
     alert("Creating/editing a data view requires Internet Explorer 5.5 or greater with XML support. Please upgrade your browser or load the appropriate patches to support XML."); 
     history.go(-1); 
    } 
    function refresh_value() { 
     xmlDoc.load(DATAVIEW_URI); 
     xmlDoc.setProperty("SelectionNamespaces", "xmlns:dv='" + DATAVIEW_NAMESPACE + "'"); 
     document.getElementById("tagvalue").value = 
     xmlDoc.selectSingleNode("/dv:view/dv:tag[@name='TEST']/dv:value").childNodes[0].nodeValue; 
    } 
    function update_value() { 
     xmlDoc.selectSingleNode("/dv:view/dv:tag[@name='TEST']/dv:value").childNodes[0].nodeValue = 
     document.getElementById("tagvalue").value; 
     xmlhttp.Open("POST", DATAVIEW_URI, false); 
     xmlhttp.Send(xmlDoc); 
     refresh_value(); 
    } 
    </script> 
</head> 
<body onLoad="refresh_value();"> 
    TEST value is <input type="text" name="tagvalue" id="tagvalue" /><br/> 
    <input type="button" onClick="refresh_value();" value="Refresh"/> 
    <input type="button" onClick="update_value();" value="Update"/> 
</body> 
</html> 

ActiveXがIE10でサポートされていない可能性があるため、次のハードルではそのコードを実行するブラウザが取得されます。しかし、別の質問です...

+0

Strongbutgood - あなたは正しいです!改行がありました。コードが実行されます。このサンプルコードをマニュアルから手に入れようとしている多くの人は、これを認識しておらず、XMLアプローチが実行可能ではないと考えています。 –

関連する問題