将变量发送到另一个php文件

时间:2014-02-14 18:03:33

标签: javascript php jquery ajax

我真的很想做什么。我的问题是PHP变量(或javascript / jQuery)没有通过我创建的AJAX请求发送到另一个php文件。好的,我正在创建一个聊天应用程序。它有一个消息文本框和一个发送按钮。当单击发送按钮时,ajax请求工作,它执行我想要的php文件(我知道这是因为它写了一个“:”到我的文本文件,这是正确的),除了我得到:“undefined index:message“,因为消息变量没有被发送到php文件!我在这个主题上发现了很多问题,但是它们似乎都没有帮助我,所以我希望你们能够弄明白。

这是我的test.php文件:

<!doctype html>
<html>
<head>
<script src="jquery.min.js"></script>
<script>
        $(document).ready(function(){
            $("#chat").load("chat.txt");
        });
</script>

<script>    
    $(document).ready(function(){
            $("#send").click(function(){
                    $.ajax({
                    type: 'post',
                    url: 'chat.php',
                    data: '' + message,
                    success: function(response){
                        $("#chat").html(response);
                    }
                });
            });
        });
</script>
</head>

<body>

<?php

    if (isset($_POST['send'])) {
        $message = $_POST['message'];
    }

?>

<style type="text/css">
    #chat {
        width: 194px;
        background-color: #292929;
        color: #493C9E;
        overflow: scroll;
    }
</style>

<pre id="chat">

</pre>

<form method="post">
    Message: <input type="text" id="message" name="message"><br>
    <input type="submit" value="Send" id="send" name="send" onclick="return false;">
</form>
</body>
</html>

我已经尝试了我能想到的一切,但没有任何工作!我尝试使用JavaScript和jQuery创建消息变量,我试图插入php标签并在数据旁边创建一个php变量。我尝试过没有空字符串。我尝试过的其他一些代码是data: { message: '123' }。此外,当我创建一个jQuery / JavaScript变量时,我提醒了消息的值,这正是我在消息文本框中输入的内容。

chat.php:

<?php
            $file = "chat.txt";
            $handle = fopen($file, "a+");
            fwrite($handle, ": " . $message . "\n");
            echo "\n: " . $message;

?>

我已尝试在chat.php文件中包含test.php文件,但无济于事。我还创建了消息变量$message = $_POST['message'];,并且消息数据应该从test.php文件发送。我已经尝试检查消息变量是否已设置(使用isset())。在test.php文件中,我也尝试通过AJAX { message: $message },创建消息变量。并且似乎没有工作!!!!这真的让我感动,所以如果有人能帮助我,我真的很感激。 Thanx ALOT提前:)
PS:如果您需要任何其他信息,请在下面评论,我会给您。感谢大家在之前的问题中做出如此快速的回应:)

3 个答案:

答案 0 :(得分:1)

我发现的问题很少:

  1. 将您的isset()移至chat.php,而不是test.php中。如果您有$.ajax(),那么为什么需要isset(),但在chat.php中使用它作为抓取和处理$_POST[]的一部分。

  2. 您缺少var,而您的ajax不知道要发送哪个字符串。

  3. 将所有jquery片段汇总到一个代码中,而不是包含2个$(document).ready(function()

  4. 我总是把我的jQuery放在html的底部(在</body>之前而不是在<head>之内。

  5. 根据我的反馈,下面的内容将按照我的编码方法显示:

    test.php的

    <!doctype html>
    <html>
    <head>
    <style type="text/css">
        #chat {
            width: 194px;   
            background-color: #292929;
            color: #493C9E;
            overflow: scroll;
        }
    </style>
    
    <script src="jquery.min.js"></script>
    </head>
    <body>
    
    <pre id="chat">
    </pre>
    
    <form id="chatForm" method="post">
        Message: <input type="text" id="message" name="message"><br>
        <input type="submit" value="Send" id="send" name="send" onclick="return false;">
    </form>
    
    <script type="text/javascript">
    /* notice I moved the jQuery script to bottom right before </html> instead of inside    <head> */
    /* combine both of 2 jQuery into same grouping */
    
    $(document).ready(function(){
        $("#chat").load("chat.txt");
    
    /* use form id for ajax to manipulate the data so, I added id="chatForm" in your html form for this one: */
    
            $("#chatForm").submit(function(){ /* <-- use `submit()` so it'd handle the whole form at once */
    var message = $( this ).serialize();  /* <-- this inkove ajax to know to expect string before sending to php */
                    $.ajax({
                    type: 'post',
                    url: 'chat.php',
                    data: ''+ message,
                    success: function(response){
                        $("#chat").html(response);
                    } // end of success
                }); // end of $.ajax()
            }); // end of submit
        });// end of document ready
    </script>
    </body>
    </html>
    

    和你的chat.php

    <?php
    
    /* transfer isset() from test.php to this file and use it to wrap your fwrite function */
    
        if (isset($_POST['message'])) { 
            $message = $_POST['message'];
           $file = "chat.txt";
                $handle = fopen($file, "a+");
                fwrite($handle, ": " . $message . "\n");
                echo "\n: " . $message;
        }        
    ?>
    

答案 1 :(得分:0)

向ajax调用添加错误函数并查看返回的内容。

error: function(msg){alert(msg.status + " " + msg.statusText);}

答案 2 :(得分:0)

您必须在$_POST中使用chat.php变量 像这样:

<?php
            $file = "chat.txt";
            $handle = fopen($file, "a+");
            fwrite($handle, ": " . $_POST['message'] . "\n");
            echo "\n: " . $_POST['message'];

?>