我正在使用Codeigniter Framework
我在控制器中,代码如下:
if(isset($_POST['field']) && !empty($_POST['field']) &&
isset($_POST['field2']) && !empty($_POST['field2'])) {
if(isset($_POST['field3']) && !empty($_POST['field3']))
//whatever
else
//whatever
} else {//whatever}
上面的代码抛出了一个500错误(我正在使用jquery将post数据发送到页面)
$.ajax({
url: url,
type: "POST",
cache: false,
contentType: false,
processData: false,
data : form,
success: function(data){
console.log(data);
checkResults(data);
},
error: function(xhr, textStatus, error){
alert("Fail");
alert(textStatus);
alert(xhr);
alert(error);
}
});
jquery运行良好,这就是它变得非常奇怪的
第一组验证(检查字段1和字段2)按预期工作,但是检查字段3会得到所有错误的
这会抛出500个错误的
if(isset($_POST['field3']) && !empty($_POST['field3']))
这不是
if(isset($_POST['field3']))
这不是
if(isset($_POST['field3']) && empty($_POST['field3']))
这是
if(isset($_POST['field3']) && (empty($_POST['field3']) == 0))
这是
if(isset($_POST['field3']) && ($_POST['field3'] == ""))
我搞不清楚,视图中所有字段都有相同的格式:
<input type="text" id="<<ID>>" name="<<NAME>" value="" />
唯一不同的是,field3是由jquery使用侦听器传播的
一开始它是用jquery.hide()隐藏的,然后是一个简单的监听器:
$("#fieldListener").change(function() {
if(this.value == "")
{
$("#field3-id").hide("slow");
$("#field3").removeClass("required");
$("#field3").val("");
} else {
$("#field3-id").show("slow");
$("#field3").addClass("required");
}
您不应该将$_POST与codeigniter一起使用。http://ellislab.com/codeigniter/user-guide/libraries/input.html
如果您想了解更多信息,请阅读文档:)