【问题标题】:Basic PHP and AJAX基本 PHP 和 AJAX
【发布时间】:2011-07-14 23:30:53
【问题描述】:

我们有一个大型 PHP 系统,我将其更改为 OOP,并希望使用 AJAX 更新已登录用户的网页。我完全是自学成才,擅长 HTML、CSS 和 PHP,对 Javascript 有基本的了解。

尝试使用 PHP 学习 AJAX 让我失望了。在尝试了一组自制的脚本来测试不起作用的 AJAX 之后,我去 Internet 上寻找示例,但无法正常工作。这是在我的开发 Mac 上运行 MAMP 并使用我们保留当前系统的主机。

我的问题是,是否有人有一套简单的“hello world”HTML 和 PHP 脚本,他们知道这些脚本可以工作,我可以尝试确认我可以运行已知的东西。

非常感谢 科林

【问题讨论】:

  • 您可能会发现使用像 jQuery 这样的 javascript 库可以让您的 AJAX 变得更容易。如果没有查看您当前的尝试,很难知道您是否遇到浏览器兼容性问题或只是日常代码问题。 jQuery 摆脱了大部分兼容性问题。

标签: php ajax


【解决方案1】:

不是真的,但如果你打算做任何 ajax,我建议你使用 jQuery。它会让你的生活变得更轻松。

特别是因为所有浏览器都没有以相同的方式实现 ajax。

使用 jQuery+PHP 进行 ajax 调用的示例应用程序:

我将假设您已经有一些基本的 html 文档,我只是要包含重要的部分..

receiver.php:

<?php
echo 'you just received me, I\'m some PHP code and ajax is definitely working...';
?>

sender.html:

<p>Hello, click this button: <a id="button" href="receiver.php">Click me</a></p>
<p id="container"><!-- currently it's empty --></p>

<!-- including jQuery from the google cdn -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>

<script type="text/javascript">
// This is our actual script
$(document).ready(function(){
    $('a#button').click(function(){
        $.ajax({
            url: this.href,
            type: 'GET',
            dataType: 'html',
            success: function (data) {
                $('#container').html(data);
            }
        });
    });
});
</script>

这应该是基本 ajax 应用程序所需要的一切......

【讨论】:

  • 谢谢。在我正在处理的程序中,我不想使用 jquery。其余的布局 HTML 和 Javascript 与我使用 AJAX 作为页面一部分上的一排按钮中的一个按钮将被选中,并在页面另一部分的 div 中显示页面的功能部分。据我所知,这应该只需要一个 AJAX 脚本来调用使用按钮 ID 选择的 PHP 脚本中的函数以及 $_POST 中的表单数据。如果我可以在它存在并且无需了解 jquery 的工作原理的情况下就可以编写它,那么将来维护起来会更容易。
  • @Colin - 如果你真的只想使用纯 JavaScript,你需要阅读jibbering.com/2002/4/httprequest.html。该页面还将向您展示如何为 IE 和 Firefox 创建对象
  • 你会很难接受的。在 jQuery/prototype 出现之前,我曾经这样做过,我大部分时间都花在了 ajax 实现上,而不是我的应用程序/ajax 逻辑
  • PHP 代码中的单引号有问题。
【解决方案2】:

我建议使用jQuery'sAJAX methods,它们是跨浏览器且易于使用的。

【讨论】:

    【解决方案3】:

    如果您打算使用 AJAX,我建议您也使用 jQuery。这大大简化了流程,经过了跨浏览器测试,并具有许多易于使用的包装函数。

    创建一个名为 hello.php

    的 PHP 页面真的很简单
    <?php
      echo "Hello World";
    ?>
    

    然后在您的主页中,您需要获取 jQuery 库并将其连接到文档就绪事件。

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript">
         $(function(){
           $.get("hello.php", function(data){
               alert(data);
           });
        });
    </script>
    

    这本质上是我所知道的最简单的 AJAX hello world 教程:)

    【讨论】:

    • 嘿,是否可以只在 html 中打印结果而不是弹出警报?
    • @RaulChiarella 当然你可以简单地 $("#id").html(data) 并将其显示在容器中
    【解决方案4】:

    这是一个使用 jQuery 的基本示例,将表单中的值发布到单独的 PHP 文件进行验证并返回结果。

    form.php

    <html>
    
    <head>
    <title>Simple JQuery Post Form to PHP Example</title>
    </head>
    
    <body>
    
    <!-- including jQuery from the google cdn -->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js">      </script>
    
    <!-- This div will be populated with error messages -->
    <div id="example_form_error"></div>
    
    <!-- This div will be populated with success messages -->
    <div id="example_form_success"></div>
    
    <!-- Here is your form -->
    <div id="example_form_enter">
        <form id="contact_modal_form" method='post' action='form_post.php'>
                <label for="Name">Enter Your Name (Not "Adam"):</label> <input class='textbox' name='Name' type='text' size='25' required />
                <button class='contact_modal_button' type='submit'>Send</button>
        </form>
    </div>
    
    <!-- This div contains a section that is hidden initially, but displayed when the form is submitted successfully -->
    <div id="example_form_confirmation" style="display: none">
        <p>
            Additional static div displayed on success.
            <br>
            <br>
            <a href="form.php">Try Again</a>
        </p>
    </div>
    
    <!-- Below is the jQuery function that process form submission and receives back results -->
    <script>
        $(function() {
            $("#contact_modal_form").submit(function(event) {
                var form = $(this);
                $.ajax({
                    type: form.attr('method'),
                    url: form.attr('action'),
                    data: form.serialize(),
                    dataType: 'json',
                    success: function(data) {
                        if(data.error == true) {
                            var error = $("#example_form_error");
                            error.css("color", "red");
                            error.html("Not " + data.msg + ". Please enter a different name.");
                        } else {
                            $("#example_form_enter").hide();
                            $("#example_form_error").hide();
                            $("#example_form_confirmation").show();
    
                            var success = $("#example_form_success");
                            success.css("color", "green");
                            success.html("Success! You submitted the name " + data.msg + ".");
                        }
                    }
                });
                event.preventDefault();
            });
        });
    </script>
    
    </body>
    
    </html>
    

    form_post.php

    <?php
    
        // Request Post Variable
        $name = $_REQUEST['Name'];
    
        // Validation
        if($name == 'Adam') {
        echo json_error($_REQUEST['Name']);
        } else {
        echo json_success($_REQUEST['Name']);
        };
    
        // Return Success Function
        function json_success($msg) {
            $return = array();
            $return['error'] = FALSE;
            $return['msg'] = $msg;
            return json_encode($return);
        }
    
        // Return Error Function
        function json_error($msg) {
            $return = array();
            $return['error'] = TRUE;
            $return['msg'] = $msg;
            return json_encode($return);
        }
    
    ?>
    

    【讨论】:

      【解决方案5】:
      if(!$mail->Send()) {
          //echo "Mailer Error: " . $mail->ErrorInfo;
          $data[0]=array('result'=>'Mail not send');
      }elseif(!$mail1->Send()){
          //echo "Mailer Error: " . $mail->ErrorInfo;
          $data[0]=array('result'=>'Mail not send');
      }else {
          $data[0]=array('result'=>'Mail Send');
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        相关资源
        最近更新 更多