基本 PHP 和 AJAX

Posted

技术标签:

【中文标题】基本 PHP 和 AJAX【英文标题】:Basic PHP and 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 摆脱了大部分兼容性问题。 【参考方案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');

【讨论】:

以上是关于基本 PHP 和 AJAX的主要内容,如果未能解决你的问题,请参考以下文章

利用ajax实现与php数据交互,并局部刷新页面

使用 PHP 上传基本的 jQuery Ajax 文件

使用 AJAX 向 PHP Web 服务提交基本表单数据

基本 DataTable Ajax 配置不起作用

Jquery中ajax基本语法

再学ajax--第二天 | 基于php+mysql+ajax的表单注册登录注销