我想知道我是否可以模仿类似于ASPX如何使用其表单系统的东西。当我单击一个按钮时,它调用相同的页面,而不是重新加载整个页面,它调用页面内的某个功能。例如,它可以调用一个函数,在其中验证表单元素是否已填写。这可能在PHP?我不知道如何提供这方面的例子,我很抱歉模糊不清......
答案 0 :(得分:2)
Ajax是你的方法。 PHP是服务器端,因此根据定义,您必须转到服务器以获得所需的内容。
如果你真的是Ajax-phobic,XAJAX将允许你直接调用PHP函数而不需要大量类似Ajax的javascript代码。但是,它并不是系统记录最多的系统。
答案 1 :(得分:1)
是否需要进行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';
}
}
答案 2 :(得分:0)
PHP中没有回调。您必须使用前端技术来组织和处理您的活动。 要与后端通信,请使用AJAX。 (发布/获取不同的php页面)
答案 3 :(得分:0)
可能看起来像这样,假设您将使用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);
}
答案 4 :(得分:-1)
通过在客户端上利用“模型,视图,控制器”设计模式和AJAX,这只能在PHP概念上实现(即您可以模拟有状态行为)。
PHP以“无状态”方式运行,这意味着每次有Web请求时,PHP都会执行其操作并在发送响应时完全“消失”。如果您正确构建了一个MVC应用程序,您可以将Web请求高度集中到应用程序中的给定方法,然后使用AJAX在实际允许表单“提交”之前使用表单内容调用该方法。
我说“概念上”,但请注意,这是大型现代网络应用中的常见和推荐做法。我这样说的原因是,就PHP而言,你仍在使用“完整”的Web请求(该按钮不会“调用”PHP函数,而不是常规网页刷新)。但是,对于MVC等体系结构,您可以将每个页面加载转换为方法调用。
答案 5 :(得分:-2)
您可以通过get
传递参数来控制调用哪些代码块。
即。一个回到自我的链接:
siteurl/page.php?what_to_do=2
然后在顶部的一些控制代码:
if($_GET['what_to_do']==1)
{
showMain();
}
elseif($_GET['what_to_do']==2)
{
showSpecial();
}
类似的东西没有写出整个程序来回答。