数组POST中的变量不会被打印

时间:2019-03-14 11:25:44

标签: php vbscript xmlhttprequest wincc

问题是: 我有一个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/>";
?>

4 is readystate, hello
is responsetext

1 个答案:

答案 0 :(得分:0)

您正在发出异步请求。程序将继续执行,并在就绪状态达到4并处理响应之前,在{strong>之前执行obj4.Text=xmlhttp.readyState

请参见the documentation

  

在Visual Basic中,您需要编写以下语句,其中   xmldoc是一个变量,并实现了一个称为   xmldoc_onreadystatechange()。

Dim WithEvents xmldoc As DOMDocument30  
     

示例:请参见Use OnReadyStateChange Property in Visual Basic and Visual C/C++