php根据条件检查将变量发布到下一页

时间:2013-09-25 17:50:36

标签: javascript php

我正在尝试post方法发送var检查某些条件

如果用户已登录,则显示按钮,然后点击发布数据到ind.php 如果没有登录show label 代码:

<?php
session_start();
$appId      = 'fgf';
$appSecret  = ''; // Facebook App Secret
$return_url = 'amazonaws.com/'; //path to script folder
?>

<!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" >
<head>
<title>ThenWat</title>
<script>
 function showUser(form, e) {
        e.preventDefault();
        e.returnValue=false;
        var sent = form.elements['sent'].value;
    alert(sent);
        if (window.XMLHttpRequest) {
            xmlhttp=new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
       xmlhttp.onreadystatechange = function(e) {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open(form.method, form.action, true);
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
        xmlhttp.send(sent);
    }
</script>
 </head>
<body style="height: 560px">
    <?php
if (isset($_SESSION['logged_in'])) {
?>
     <form action="ind.php" method="POST" onsubmit="showUser(this, event)">
        <pre>
             <label>Enter the sentence: <input type="text" name="sent"></label><br/>
        </pre>
                <input type="submit" class="submit" name="insert" value="submit"/>
    </form>
<?php
}
?>
<?php
if (!isset($_SESSION['logged_in'])) {
?>
 <label>not logged in </label>
<?php
}
?>
<div id="txtHint"> </div>
</body>
</html>

ind.php

<html>
<body>

<?php
$s=$_POST['sent'];
echo $s;

?>
</body>
</html>

总是说没有登录,如果我删除条件数据不在ind.php上发布。 错误:Undefined index: sent in /opt/lampp/htdocs/a/FB/ec2/ind.php on line 5

2 个答案:

答案 0 :(得分:0)

为了清晰和简单起见,此解决方案使用jQuery。我确实上面询问jQuery是否可以接受并且没有得到答案,所以如果不需要请注释(而不是downvote),我会删除答案。

请注意,我为您的表单分配了一个ID属性,以便更轻松地在DOM中选择它。如果没有为表单分配ID,您仍然可以选择它,因此:

$('form').submit({});
但是,如果您在页面上有多个表单,那将会令人困惑。 始终最好在您的元素中使用ID,以便您可以准确指定要选择的元素。

此外,从表单标记中删除了onSubmit(),并将其与其余的javascript代码放在一起,因此:

$('#myForm').submit(function(e) {


<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {

                $('#myForm').submit(function(e) {
                    var sent = $('[name==sent]').val();
                    $.ajax({
                        type: "POST",
                        url: "ind.php",
                        data: "sent=" + sent
                    })
                    .done(function(recd) {
                        $('#txtHint').html(recd);
                    });
                    e.preventDefault();
                }); //END form submit

            }); //END document.ready
        </script>
    </head>

    <body style="height: 560px">
    <?php
        if (isset($_SESSION['logged_in'])) {
    ?>
         <form id="myForm" action="ind.php" method="POST">
            Enter the sentence: <input type="text" name="sent"><br/>
            <input type="submit" value="Submit"/>
        </form>
    <?php
        }
        if (!isset($_SESSION['logged_in'])) {
    ?>
            <p>Not logged in </p>
    <?php
        }
    ?>
        <div id="txtHint"> </div>

</body>

</html>

最后,您的ind.php文件只需要包含此内容:

<?php
    $s = $_POST['sent'];
    echo 'PHP side received: ' . $s;

答案 1 :(得分:0)

要回答评论中的问题:

正如您所知,javascript是一种客户端编程语言。

jQuery是一种更简单,更简洁,更一致(并且自动跨浏览器兼容)的javascript形式。 jQuery是一个运行在javascript之上的 - 你输入jQuery代码,并在运行时转换为javascript。

AJAX可以用javascript或jQuery编写 - 但需要很多代码才能在javascript中执行。 AJAX只是一个程序(不是语言!),用于在不刷新页面的情况下与服务器交换数据。

FORMS是一种从浏览器页面(客户端)向服务器发送数据的方法,以便服务器可以处理它。表单提交时,始终刷新/重定向页面。表单可以使用表单标记中的action=""(即,不在action属性中指定其他页面)将提交到同一页面。但是,这也会刷新页面。与服务器交换数据但刷新页面的唯一方法是使用AJAX。

如果您使用AJAX然后想要将页面重定向到其他位置,则可以使用javascript命令:

window.location.href = "http://anotherpage.php";

最大的好处是使用带有window.location.href的AJAX是它给你的灵活性。例如,您可以:

  • 首先验证用户提供的数据(如果有任何错误,则将控制权交还给用户)
  • 将其发送到服务器,然后将其静默添加到数据库中,然后
  • 可以根据用户提交的数据和
  • 运行另一个MySQL查询
  • 新的HTML代码可以发送回浏览器(到达success:done功能)
  • 使用来自第二个MySQL查询的信息向用户显示消息,然后
  • 准备好后,将用户重定向到另一个页面

正如您所看到的,AJAX为程序员提供了更多的控制权。