form.pmit里面的if-else语句不起作用

时间:2013-10-25 09:44:43

标签: php jquery ajax

我试图在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."); 
            }
        });

2 个答案:

答案 0 :(得分:1)

后端是否按预期执行操作?

在您的signup / order_validations控制器中,编写一个简单的测试:

public function order_validations(){
    echo json_encode(array("test"=>"test"));
}

然后,在您的AJAX调用中,尝试回显结果:

success: function (data) {
    console.debug(data);
    alert(data);
}

并在Chrome / Firefox控制台中查看此内容。

现在你知道你要归还的是什么,你应该能够正确控制它。

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

答案 1 :(得分:0)

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

你可以这样做来计算:

var count = Object.keys(data).length;
if(count > 0) {
   //your code here
}

这里有更多细节:How to list the properties of a JavaScript object

或者你可以使用像underscore.js这样的东西。它允许您检查大小,如下所示:

_.size(data);