0

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

2 回答 2

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 响应中将数据发送到后端而不是单独再次提交来处理表单提交不是更容易吗?

于 2013-10-25T09:54:49.477 回答
0

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

你可以这样做来获得计数:

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

这里有更多细节:如何列出 JavaScript 对象的属性

或者,您可以使用类似 underscore.js 的内容。它将允许您检查大小,如下所示:

_.size(data);
于 2013-10-25T09:50:48.790 回答