我有一个将postid
和comment
发送到另一个页面的ajax代码。
ajax.php
$.ajax({
type: "POST",
url: "addcomment.php",
data: {comment : comment,postid : postid},
我在其他页面上收到数据:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$postid=$_POST['postid'];
$comment=$_POST['comment'];
这里我可以对验证第二个代码进行哪些改进。我的意思是代码只有在postid
和comment
发布后才能继续。
答案 0 :(得分:1)
只需检查它们是否已定义......
function myfunc(offset) {
var d = $.Deferred(); // Create "Deferred" object
setTimeout(function(){
return $.ajax({
url:"https://www.URL.com",
crossDomain: true,
dataType: "jsonp",
success: function (response) {
// console.log(response);
data = data.concat(response);
d.resolve(); // Resolve it
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// handle errors
d.reject(); // Reject it
}
});
},offset/10);
return d.promise(); // Return its promise
}
或者您可以在进行AJAX调用之前执行此操作。在获取postid和comment元素的值时,只需检查它们是否有值。如果没有从功能返回。
答案 1 :(得分:1)
你可以做一些事情,首先你要确保两个变量都存在,你可以使用isset()
对于这样的代码,我倾向于支持早期返回嵌套ifs,所以你可以这样做:
if (!isset($_POST['postid']) || !isset($_POST['comment'])) {
$error = 'Values for postid and comment were not set.';
return $error;
}
检查两个变量都已设置后,您可以开始验证变量是否是正确的类型和大小。
您可以将isset()
替换为empty()
,所以:
if (empty($_POST['postid'] || empty($_POST['comment']) {
$error = 'Values are not set.';
return $error;
}
例如,我假设postid
是数字,所以...
if (!is_numeric($_POST['postid'])) {
$error = 'Value for postid must be numeric.';
return $error;
}
您还可以检查它是否高于0:if (!$_POST['postid'] > 0) {}
然后,您可以检查长度是否大于0。
if (!strlen($_POST['comment']) > 0) {
$error = 'Comment was left blank, ensure it is filled in.';
return $error;
}
所以这只是一些让你入门的例子,希望它有所帮助。 :)
答案 2 :(得分:1)
我建议您创建一个通用的Validator类,它将根据您要验证的表单进行不同的配置(使用配置数组或文件轻松完成)。 这样,您只需要完成一次工作,就可以在项目中重复使用它,也可以使代码更清晰,更易于维护。