我想知道我是否可以模拟类似于 ASPX 如何与他们的表单系统一起工作的东西。当我单击一个按钮时,它会调用同一个页面,但不是重新加载整个页面,而是调用页面内的某个函数。例如,它可以调用一个函数,该函数将验证表单元素是否已填写。这在PHP中可能吗?我不知道如何提供一个例子,我很抱歉含糊不清......
6 回答
Ajax 是您的方法。PHP 是服务器端,因此根据定义,您必须前往服务器才能获得所需的内容。
如果你真的是 Ajax 恐惧症,XAJAX将允许你直接调用 PHP 函数,而无需大量类似 Ajax 的 javascript 代码。不过,它并不是记录最多的系统。
它需要是一个PHP调用吗?您可以使用简单的 Javascript 或通过 AJAX 调用来完成此操作。
编辑:添加了通过 AJAX 调用 PHP 函数的示例。(使用 jQuery)
这是一个例子:
<?php
if(isset($_POST['functionToCall']))
{
$args = $_POST;
array_shift($args);
call_user_func($_POST['functionToCall'], $args);
} else {
?>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<form id="myForm">
<input id="mytext" type="text" value="some value"/>
<input type="submit"/>
</form>
<button id="callBTN">Call Validation</button>
<div id="result"></div>
<script>
$(document).ready(function()
{
$('#callBTN').click(function()
{
//Values to pass (validate)
var inputVal = $('#mytext').val();
// Function to call in the PHP Side
var functionName = 'myFunctionCall';
//Form validation with pure JS+jquery (without calling PHP)
/*
if( !inputVal)
{
alert('text is empty');
} else {
alert('text is not empty');
}
*/
//Form Validation by calling a PHP function through AJAX
var selfURL = document.URL; //An example of calling itself
$.post(selfURL, {"functionToCall": functionName, "mytext": inputVal}, function(data) {
$('#result').html(data);
});
});
});
</script>
</body>
</html>
<?php
}
function myFunctionCall($args)
{
if(!empty($_POST['mytext']))
{
print 'The text submited was -> ' . $_POST['mytext'];
} else {
print 'There was no text submitted';
}
}
PHP 中没有回调。您将不得不使用前端技术来组织和处理您的活动。为了与您的后端通信,您使用 AJAX。(发布/获取到不同的 php 页面)
它可能看起来像这样,假设你会使用jQuery
<script>
$('#form).submit(function(e){
e.preventDefault();
$.post($(this).attr('action'), $(this).serialize(), function(data){
// in data you'll have response from server, preferably JSON
}
});
</script>
<form action="form/handler.php" method="post" id="form">
<input type="text" name="name" value="" />
<input type="submit" />
</form>
form/handler.php
if(isset($_POST['name)){
// implement any logic you want and construct JSON response you need
$response = array('name' => $_POST['name']);
echo json_encode($response);
}
这仅在概念上可能使用 PHP(即您可以模拟有状态的行为),通过利用客户端上的“模型、视图、控制器”设计模式和 AJAX。
PHP 以“无状态”方式运行,这意味着每次有 Web 请求时,PHP 都会做自己的事情,并在发送响应时完全“消失”。如果你正确地构建了一个 MVC 应用程序,你可以将 web 请求高度集中到应用程序中的给定方法上,然后在实际允许表单“提交”之前使用 AJAX 使用表单内容调用该方法。
我说的是“概念上”,但请注意,这是大型现代 Web 应用程序中常见且推荐的做法。我这样说的原因是,就 PHP 而言,您仍在使用“完整”Web 请求(该按钮不会“调用”PHP 函数,就像常规网页刷新一样)。但是,使用 MVC 等架构,您可以将每个页面加载转换为方法调用。
您可以通过get
控制调用哪些代码块来传递参数。
即返回自我的链接:
siteurl/page.php?what_to_do=2
然后是顶部的一些控制代码:
if($_GET['what_to_do']==1)
{
showMain();
}
elseif($_GET['what_to_do']==2)
{
showSpecial();
}
像这样的事情,没有写出整个程序来回答。