如何在PHP中检索自动上传的表单数据

时间:2019-05-10 17:54:58

标签: javascript php html

我正在尝试使用javascript自动发布数据并将其检索到PHP文件中,但是PHP文件未检索到数据。

我创建了一个自动表单,该表单从另一个表单接收其输入并将其自动发送到另一个PHP文件。但是下一个文件pics.php无法接收数据。我只张贴了代码的相关部分。首先是HTML / javascript代码。

<html>
<script type="text/javascript">
function submit()
{   document.getElementById("auto").click(); 
    document.auto.submit();    
}
</script>

<body onload="submit()">
<form name="auto" id="auto" action="pics.php" method="post">
<input type="hidden" name= "prodnm" value="<?php echo 
 $prodnm; ?>" /><br/>
<input type="hidden" name= "eigid" value="<?php echo $eigid; 
 ?>" /><br/>
</form>
</body> 
</html>

这是pics.php文件中PHP代码的一部分

<?php
require_once 'connect.php';
$prodnm = $_POST['prodnm'];
$eigid = $_POST['eigid'];
echo $prodnm;
echo $eigid;                    
?>  

非常感谢您的帮助。我已经连续两天了。

2 个答案:

答案 0 :(得分:0)

恐怕不建议使用这种方法。

该表单似乎没有从其他表单中获取您说的值(无论是谁?)。

为什么不使用带有提交按钮的单个表单。

为输入字段定义默认值(根据需要,可以选择显示和隐藏)。

然后使用JavaScript代码自动提交页面加载时的默认值。

请记住,总是存在更好而不太复杂的编写代码的方法,以便于调试。

答案 1 :(得分:0)

看着上面的代码,我看不到为什么您不能通过ajax请求发送数据,而不是尝试填充表单然后以某种方式触发Submit方法...也许以下方面对此很感兴趣。

/* replace the inline submit handler with a remote listener */
document.addEventListener('DOMContentLoaded', ()=>{

    /* a very basic ajax function to send a POST request */
    const ajax=function( url, params, callback ){
        let xhr=new XMLHttpRequest();
        xhr.onload=function(){
            if( this.status==200 && this.readyState==4 )callback( this.response )
        };
        xhr.open( 'POST', url, true );
        xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
        xhr.send( params );
    };

    /* for convenience, declare PHP variables as Javascript variables */
    <?php
        printf("
            let prodnm='%s';
            let eigid='%s';\n",
            $prodnm,
            $eigid
        );
    ?>

    /* Make the POST request to pics.php */
    ajax( 'pics.php', 'prodnm='+prodnm+'&eigid='+eigid, r=>{
        alert("Do something with result?\n\nResponse: "+r+"\n\nReload? Modify DOM?")
    });
});

由于数据在PHP上正试图发布表单时存在,并且由于没有预期的人机交互,因此您可以使用curl(或类似方法)来消除对该页面的需要。