本帖最后由 showbo 于 2014-10-22 17:30:06 编辑

解决方案 »

  1.   

    ok你定义了没有,没定义if($("#DishCategory_Name").val()=="")判断不通过第一次执行直接报ok没定义错误而且你的ajax是异步执行的,无法正确获取到ok的返回,要改为同步的而且你执行checkName要重置一下ok吧。。要不就是用的上一次的放回结果了   function checkName() {
            //检查是否为空
            if ($("#DishCategory_Name").val() == "") {
                $(".DishCategory_NameTip").html("<span class='sui-label label-danger'><i class='fa fa-ban'></i>分类名称不能为空</span>");
                layer.msg('分类名称不能为空', 1, 2);
                ok = 0; /* 函数内全局变量 */
            }        //不为空的时候不提示消息
            if ($("#DishCategory_Name").val() !== "") {            var categoryname = $('#DishCategory_Name').val(); //得到的新值
                $.ajax({
                    async: false,
                    url: "__URL__/ajaxDishCategoryName/category/" + categoryname,
                    success: function (data, status) {
                        if (data == 1) {
                            layer.msg('分类名称不能重复', 1, 2);
                            $(".DishCategory_NameTip").html("<span class='sui-label label-danger'><i class='fa fa-ban'></i>分类名称不能重复</span>");                        ok = 0; /* 函数内全局变量 */
                        } else {
                            $(".DishCategory_NameTip").html("<span class='sui-label label-success'><i class='fa fa-check'></i>填写通过</span>");
                            ok = 1; /* 函数内全局变量 */
                        }
                    }            });
            }    }
      

  2.   

    而且你执行checkName要重置一下ok吧。。要不就是用的上一次的放回结果了最后一句如何理解
      

  3.   

    重置OK的意思是
     function checkName() {
        OK = '';//默认失败值
        ....//你的代码
    }还有一点 ajax 里面写一个error 错误的函数