0

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

如果用户已登录,则显示按钮并单击将数据发布到,ind.php 如果未登录则显示标签代码:

<?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

4

2 回答 2

0

为了清楚和简单起见,此解决方案使用 jQuery。我确实在上面问过 jQuery 是否可以接受并且没有收到答案,所以如果不需要,请发表评论(而不是投反对票),我将删除答案。

请注意,我为您的表单分配了一个 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;
于 2013-09-25T18:11:40.533 回答
0

要回答您评论中的问题:

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

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

AJAX can be written in either javascript or jQuery -- but requires LOTS MORE code to do it in javascript. AJAX is just a procedure (not a language!) for exchanging data with a server without refreshing the page.

FORMS are a method of sending data from the browser page (client side) to the server, so that the server can process it. When a form submits, it always refreshes/redirects the page. It is possible for a form to submit to the same page by using action="" in the form tag (that is, not specifying a different page in the action attribute). However, this also will refresh the page. The only way to exchange data with the server but not refresh the page, is to use AJAX.

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

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

将 AJAX 与 window.location.href 结合使用的最大优势是它为您提供的灵活性。例如,您可以:

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

如您所见,AJAX 为程序员提供了更多控制权。

于 2013-09-26T17:10:01.360 回答