基本 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的主要内容,如果未能解决你的问题,请参考以下文章