【发布时间】:2018-11-16 11:24:12
【问题描述】:
我想用 PHP 验证表单输入。 Empty() 在我的 php 文件中没有返回任何结果(没有错误消息,表单提交)。该表格有效 - 它确实提交了该字段 - 但我可以提交一个空白字段。无论如何,AJAX 都会返回 success。 <?php echo $error;?> 抛出 unidentified variable 错误,因为 empty() 函数没有返回任何内容。我应该提一下,这是 3 个不同的文件。
PHP:
<?php
$error= '';
$title = '';
if(isset($_GET)) {
if (empty($_GET['page_title'])) {
$error= 'Name is required';
} else {
$title = $_GET['page_title'];
}
}
?>
AJAX (Jquery)
$(function() {
$('form').submit(function(e) {
e.preventDefault();
$.ajax({
method: 'GET',
url: 'save_to_WP.php',
data: {
page_title: $('input[name="page_title"]').val()
},
success: function(e){
alert('yay');
},
error: function(e) {
alert('Error');
}
});
});
HTML
<form>
<input type = "text" name="page_title" />
<span class="error"><?php echo $error;?></span>
<button type = "submit">Save</button>
</form>
我之前发布了这段代码,但我相信我所说的问题实际上是这个问题的症状。难怪我没有得到有效的答案,我问错了问题。
如果您有任何帮助或建议,我将不胜感激。
【问题讨论】:
-
PHP 代码不会发出任何输出,不会抛出任何错误,也不会真正执行任何事情。它有条件地设置一个变量,但从不使用该变量。根本没有迹象表明客户发生了任何事情。我不清楚您期望 AJAX 调用的结果是什么或为什么。我希望这个 PHP 代码总是能成功返回一个空白响应。
-
当你
var_dump($_GET)时会发生什么? -
如果要使用ajax错误,需要返回http错误码,例如500错误。
-
@David 该表单实际上是从外部来源(带有表单的页面)创建一个 WP 帖子。有两部分:输入字段和来自 Jquery 从页面获取元素的内容。这一切都很好 - 我只是想要一点验证(我们不是都......?)。为了调试,除了提交输入字段之外,我删除了所有内容,只是为了看看尝试提交空白字段是否会引发错误。
-
@crinkledMap: 好吧,1) JavaScript 中没有任何东西可以阻止表单提交,2) PHP 代码可能确实设置了
$error变量,但它没有返回给客户端,因此客户端永远不会看到该文本,3)仅当服务器在响应中发回错误代码时才调用 AJAXerror回调(请参阅下面的另一个用户的答案),显示的代码不会这样做。您期望事情会在这里自动发生,但恐怕事实并非如此。对于这三个选项中的任何一个,您都需要编写代码来显式执行该操作。
标签: php jquery ajax validation