无法弄清楚为什么isset不起作用

时间:2015-02-17 16:11:01

标签: php

我有一个按钮,我需要在点击它时调用一个函数但由于某种原因,isset函数没有看到按钮被点击。

下面是php / html文件中的两行:

 <input type="submit" id='details' name='details' class="pull-right btn-sm btn-primary" value='Show Details'/>


 <h4><?php echo $subject_details; ?></h4>

以下是外部的。我知道它已包含在内,因为如果我在else语句中添加if,并将该变量设置为不同的变量,则会发生变化。

 $subject_details = '';

 if(isset($_POST['details'])){

    $subject_details = 'button clicked';
    setDetails(); 

}

感谢有人看到这个!

3 个答案:

答案 0 :(得分:1)

isset()函数仅适用于输入类型提交。您可以做的是将按钮嵌入到表单中,让页面重新加载到自身以获取存储在外部php中的变量。举个例子:

//in your main.php

<?php 
include 'external.php';
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" name="submit" value="Send">
</form>

<h4><?php echo $subject_details; ?></h4>


//in your external.php

<?php
$subject_details = '';
if(isset($_POST['submit'])){
    $subject_details = 'button clicked';
}
?>

答案 1 :(得分:1)

如果没有看到完整的代码示例,我无法确定,但您可能没有在method="post"标记上指定<form>属性。表单默认为method="get",因此您需要使用isset($_GET['details'])

一个工作的例子是:

<form action="" method="post">
     <input type="submit" name='details' value='Show Details'>
</form>

<?php

if (isset($_POST['details'])) {
    echo $_POST['details'];
} else {
    echo 'No post data submitted';
}

答案 2 :(得分:0)

你可以玩这个...可能有帮助

<!-- head section -->
<script>
    window.onload=function(){
        var oCol=document.querySelectorAll('input[type="button"]');
        for( var b in oCol ) if( b && oCol[b] && oCol[b].nodeType==1 ) oCol[ b ].onclick=function(e){
            alert( this.tagName + ' '+this.id+' was clicked...' );
        }.bind( oCol[b]);
    };
</script>




        <input type='button' id='b1' value='Button 1' />
        <input type='button' id='b2' value='Button 2' />
        <input type='button' id='b3' value='Button 3' />
        <input type='button' id='b4' value='Button 4' />