问题是: 我有一个VBScript,它是从WinCCRuntime应用程序(西门子软件)运行的。该脚本创建MSXML2.XMLHTTP对象,并将数据发送到处理程序(用PHP编写),该处理程序在OpenServer 5.3.0.Premium(免费的Web服务器)上运行 在同一主机上(虚拟机上的所有应用程序)。脚本工作后,我在VBS应用就绪状态为“ 4”的状态下收到响应文本,并带有正确的数据(PHP会打印出已收到的内容)。 但是这些数据不会在浏览器的页面上打印出来! (Echo不打印任何内容,print_r仅打印安培数组)。 使用GET和POST时,问题是相同的。当只是通过链接localhost:90 / ajax1 / handler.php?value = value 一切都好。 我需要将数据从WInCC应用程序发送到WEB应用程序。问题可能在哪里?我看穿了: POST array not getting printed 但是还有另一件事。 预先感谢。
这是VBScript:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim xmlhttp
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
data1="hello"
xmlhttp.open "GET", "http://localhost:90/ajax1/handler.php?value="&data1, True
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "Access-Control-Allow-Origin", " *"
xmlhttp.send ""
Dim obj4
Set obj4 = HMIRuntime.Screens("http").ScreenItems("Button2")
obj4.Text=xmlhttp.readyState
Dim obj3
Set obj3 = HMIRuntime.Screens("http").ScreenItems("Button3")
obj3.Text=xmlhttp.responseText
End Sub
这是PHP脚本:
<?php
$value=$_GET['value'];
echo $value."<br/>";
?>
答案 0 :(得分:0)
您正在发出异步请求。程序将继续执行,并在就绪状态达到4并处理响应之前,在{strong>之前执行obj4.Text=xmlhttp.readyState
。
在Visual Basic中,您需要编写以下语句,其中 xmldoc是一个变量,并实现了一个称为 xmldoc_onreadystatechange()。
Dim WithEvents xmldoc As DOMDocument30
示例:请参见Use OnReadyStateChange Property in Visual Basic and Visual C/C++。