Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击按钮时运行php脚本刷新表内容_Php_Soap - Fatal编程技术网

单击按钮时运行php脚本刷新表内容

单击按钮时运行php脚本刷新表内容,php,soap,Php,Soap,我有下面的php,希望知道如何在单击submit按钮时使用新的输入值重新运行脚本的底部 我觉得我的剧本只需要最后的润色,但当你认为另一种方法更可取时,不要克制自己不提建议 我知道如何将javascript分配给按钮,但这里我只想重新运行创建soap客户端的底层代码,调用soapweb服务并将xslt应用于生成的XML,并希望在php中使用它,主要是因为我不知道ECMA脚本中的等价物,但也因为脚本负责将生成的表放置在我希望的位置 <!DOCTYPE html PUBLIC "-//W3C//

我有下面的php,希望知道如何在单击submit按钮时使用新的输入值重新运行脚本的底部

我觉得我的剧本只需要最后的润色,但当你认为另一种方法更可取时,不要克制自己不提建议

我知道如何将javascript分配给按钮,但这里我只想重新运行创建soap客户端的底层代码,调用soapweb服务并将xslt应用于生成的XML,并希望在php中使用它,主要是因为我不知道ECMA脚本中的等价物,但也因为脚本负责将生成的表放置在我希望的位置

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Get element details</title>
    <style type="text/css">
        @import url("Swift.css");
    </style>
</head>
<body>
    <br/>
<?php # httpCallExample2.php

    echo '<form action="httpCallExample2.php" method="post">
        <fieldset>
            <legend>Get element details</legend>
            <p>
                Element: <input name="element" type="text" size="12" maxlength="12" />&nbsp; &nbsp; <button type="submit" name="submit" value="update">Get details</button>
            </p>
        </fieldset>
    </form>
    ';
    echo '<br/>';

    $soapReq = new SoapClient('http://www.webservicex.net/periodictable.asmx?WSDL');
    $input = array ("ElementName" => $element);

    $result = $soapReq ->
        __soapCall("GetAtomicNumber",
            array(
                'parameters' => $input
            )
        );

    $XML = new DOMDocument();
    $XML -> loadXML ( $result -> GetAtomicNumberResult );

    $xslt = new XSLTProcessor();
    $XSL = new DOMDocument();
    $XSL -> load('showResults.xslt');
    $xslt -> importStylesheet( $XSL );

    echo $xslt -> transformToXML( $XML );

?>
</body>
</html>
不介意css文件只包含一些表格布局内容,但我使用的xslt如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <table>
            <thead>
                <tr>
                    <th colspan="2">SOAP results</th>
                </tr>
            </thead>
            <tbody>
                <xsl:for-each select="//NewDataSet/Table/*">
                    <tr>
                        <td><xsl:value-of select="name()"/></td>
                        <td><xsl:value-of select="."/></td>
                    </tr>
                </xsl:for-each>
            </tbody>
        </table>
    </xsl:template>
</xsl:stylesheet>
生成的页面应该类似于


我希望在输入元素被赋予值Carbon并单击submit按钮后,底部部分将被填充。

我曾希望有人能帮助我,但一如既往,我不能离开它,继续尝试找到解决方案。 我做到了:诀窍是重新打开php文件并将元素值传递给它,当使用GET方法而不是POST时,可以使用表达式$\u POST['element']或$\u GET['element']访问该文件

我得出的最终结果如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Get element details</title>
    <style type="text/css">
        @import url("Swift.css");
    </style>
</head>
<body>
    <br/>
<?php
    echo '<form action="httpCallExample2.php" method="post">
        <fieldset>
            <legend>Get element details</legend>
            <p>
                Element: <input name="element" type="text" size="12" maxlength="12" />&nbsp; &nbsp; <input type="submit" value="Get details"/>
            </p>
        </fieldset>
    </form>
    ';
?>
    <br/>

<?php
    if (!empty($_POST['element'])) {
        $soapReq = new SoapClient('http://www.webservicex.net/periodictable.asmx?WSDL');
        $input = array ("ElementName" => $_POST['element'];

        $result = $soapReq ->
            __soapCall("GetAtomicNumber",
                array(
                    'parameters' => $input
                )
            );

        $XML = new DOMDocument();
        $XML -> loadXML ( $result -> GetAtomicNumberResult );

        $xslt = new XSLTProcessor();
        $XSL = new DOMDocument();
        $XSL -> load('showResults.xslt');
        $xslt -> importStylesheet( $XSL );

        echo $xslt -> transformToXML( $XML );
    }
?>
</body>
</html>
首先只生成输入表单,例如,当输入并单击按钮时,这将给出


当然,也可以将发布的值再次输入到输入元素中。

我曾希望有人能帮助我,但一如既往,我不能就此置之不理,而是继续努力寻找解决方案。 我做到了:诀窍是重新打开php文件并将元素值传递给它,当使用GET方法而不是POST时,可以使用表达式$\u POST['element']或$\u GET['element']访问该文件

我得出的最终结果如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Get element details</title>
    <style type="text/css">
        @import url("Swift.css");
    </style>
</head>
<body>
    <br/>
<?php
    echo '<form action="httpCallExample2.php" method="post">
        <fieldset>
            <legend>Get element details</legend>
            <p>
                Element: <input name="element" type="text" size="12" maxlength="12" />&nbsp; &nbsp; <input type="submit" value="Get details"/>
            </p>
        </fieldset>
    </form>
    ';
?>
    <br/>

<?php
    if (!empty($_POST['element'])) {
        $soapReq = new SoapClient('http://www.webservicex.net/periodictable.asmx?WSDL');
        $input = array ("ElementName" => $_POST['element'];

        $result = $soapReq ->
            __soapCall("GetAtomicNumber",
                array(
                    'parameters' => $input
                )
            );

        $XML = new DOMDocument();
        $XML -> loadXML ( $result -> GetAtomicNumberResult );

        $xslt = new XSLTProcessor();
        $XSL = new DOMDocument();
        $XSL -> load('showResults.xslt');
        $xslt -> importStylesheet( $XSL );

        echo $xslt -> transformToXML( $XML );
    }
?>
</body>
</html>
首先只生成输入表单,例如,当输入并单击按钮时,这将给出


当然,也可以在输入元素中再次输入POST值。

这真的是刷新页面的一部分,还是只是用不同的数据重新加载页面?这是一种重新加载,通过http POST请求将附加值传递给php文件。其效果与刷新底部部分并清除输入值相同,因此我现在对此感到满意:-。您的问题使您似乎想用AJAX做些什么,这就是创建部分页面重新加载。您可以始终使用POST或GET将新变量传递给脚本,并根据它们更改输出。我想,这就是Web编程的基础,也是如此。但这是我在这方面的第一步,对我来说都是新鲜事。感谢您的思考。这真的是刷新页面的一部分,还是只是用不同的数据重新加载页面?这是一个重新加载,通过http POST请求将附加值传递给php文件。其效果与刷新底部部分并清除输入值相同,因此我现在对此感到满意:-。您的问题使您似乎想用AJAX做些什么,这就是创建部分页面重新加载。您可以始终使用POST或GET将新变量传递给脚本,并根据它们更改输出。我想,这就是Web编程的基础,也是如此。但这是我在这方面的第一步,对我来说都是新鲜事。谢谢你一直这么想。