【问题标题】:jQuery Ajax validation does not return errorjQuery Ajax 验证不返回错误
【发布时间】:2019-04-19 03:46:00
【问题描述】:

我目前正在研究休假申请系统。我有我想验证的下拉字段,如果 api 返回 false,用户无法提交应用程序。

例如如果年假不可用(getLeaveAvailability return false)应该返回错误信息。

表格:

 <div class="form-group">
                                        <label class="control-label col-md-3">Leave Type</label>
                                        <div class="col-md-9">

                                            <select type="text" id="leave_type" name="leave_type" required="required" class="leave_type form-control col-md-7 col-xs-12">
                                                <option value="">Select Leave Type</option>


                                                <option value="1">Annual Leave</option>
                                                <option value="2">Medical Leave</option>

                                            </select>

                                        </div>
                                    </div>

Jquery Ajax 验证:

var validator = form.validate({
      debug: true,
      rules: {
        leave_type: {
          required: true,
          remote: {
            url: base_url + "/getLeaveAvailability",
            type: 'post',
            dataType: 'json',
            data: {
              leave_id: function() {
                return $('[name="leave_type"]').val();
              }
            }
          },
          // leave_type: true
        },
      },
      messages: {
        leave_type: {
          remote: "Leave not available!"
        }
      },

API 响应:

 public function getLeaveAvailability(Request $request){

        return 'false';
    }

【问题讨论】:

  • 向我们展示实际渲染的 HTML,而不是您的 ASP 代码或其他任何内容。其次,向我们展示/getLeaveAvailability 函数,以便我们可以验证您是否以插件可以读取的格式发送回正确的数据。例如,PHP 将 echo 一个“true”、“false”或 JSON 编码的字符串。
  • data: { leave_id: function() { return $('select[name="leave_type"] option:selected').val(); } }
  • @Sparky 我编辑了问题
  • 那么服务器上有什么? PHP,ASP,等等??例如,在 PHP 中,您将使用 ECHO,而不是 returnreturn 返回上一个函数。相反,您需要输出到屏幕...例如echo。见:stackoverflow.com/questions/2977675/…

标签: jquery ajax jquery-validate


【解决方案1】:

我认为您可以通过以下代码获得帮助,

leave_type: {
      required: true,
      remote: {
        url: base_url + "/getLeaveAvailability",
        type: 'post',
        dataType: 'json',
        data: {
          leave_id: function() {
            return $('[name="leave_type"]').val();
          }
        },
        success: function(response) {
            if (response.responseText == "true") { //here you have to check the return response from server side
                //Write statement if success

            } else {  
                //Write statement if failed
            }
        }
    }
}

【讨论】:

  • 这是错误的。插件自动处理来自服务器端脚本的 JSON 编码响应字符串。您不应该为此编写 ajax success 函数,也不能控制插件的有效/无效例程。 Doesn't anyone read the documentation?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2021-12-20
相关资源
最近更新 更多