Php form.submit inside if else语句不起作用

Php form.submit inside if else语句不起作用,php,jquery,ajax,Php,Jquery,Ajax,我试图在if-else语句下提交一个关于ajax成功的表单,但它不起作用 我不明白为什么?请参见下面的代码 $.ajax({ type: "POST", url:'<?php echo base_url() ?>signup/order_validations', data:$("#orderform").serialize(), dataType: 'json',

我试图在if-else语句下提交一个关于ajax成功的表单,但它不起作用 我不明白为什么?请参见下面的代码

$.ajax({
            type: "POST",
            url:'<?php echo base_url() ?>signup/order_validations',
            data:$("#orderform").serialize(),
            dataType: 'json',
            success: function (data) {
                if(data.length > 0){
                    $(".err").html(data);
                    $(".err").show();
                    $('html, body').animate({scrollTop: $(".progras-bar-area").offset().top}, 800);
                }else{
                    $("#orderform").submit();
                }

            },
            error:function(){
              $(".err").html("Something went wrong...Please try again."); 
            }
        });
$.ajax({
类型:“POST”,
url:'signup/order_validations',
数据:$(“#订单”).serialize(),
数据类型:“json”,
成功:功能(数据){
如果(data.length>0){
$(“.err”).html(数据);
$(“.err”).show();
$('html,body').animate({scrollTop:$(“.progras bar area”).offset().top},800);
}否则{
$(“#订单”).submit();
}
},
错误:函数(){
$(“.err”).html(“出现问题…请重试”);
}
});

看起来您正在尝试获取json对象的长度,该对象将始终返回为未定义或0,因为它不是数组

您可以执行以下操作以获取计数:

var count = Object.keys(data).length;
if(count > 0) {
   //your code here
}
这里有更多的细节:

或者,您可以使用类似下划线.js的内容。它将允许您检查尺寸,如下所示:

_.size(data);

后端是否正在做您期望它做的事情

在注册/订单验证控制器中,编写一个简单的测试:

public function order_validations(){
    echo json_encode(array("test"=>"test"));
}
然后,在AJAX调用中,尝试回显结果:

success: function (data) {
    console.debug(data);
    alert(data);
}
并在您的Chrome/Firefox控制台中检查这一点

现在你知道你要返回什么,你应该能够正确地控制它


另外,通过在AJAX响应中将数据发送到后端而不是单独再次提交,处理表单提交不是更容易吗?

请解释“不工作”的含义。您在AJAX响应中发送的是什么?我明白了,您使用的是CodeIgniter?这不是处理错误的最佳方法。CI有一些内置函数,可以让您的生活更轻松,不需要AJAX处理。