【问题标题】:Uncaught SyntaxError: Unexpected token u in JSON at position 0 when I call $(form).valid()未捕获的语法错误:当我调用 $(form).valid() 时,JSON 中位置 0 处出现意外标记 u
【发布时间】:2016-09-03 22:39:20
【问题描述】:

我有这样的表格:

<div class="row">
    @using (Ajax.BeginForm("ImportFromExcel", "QuanLySim", null, new AjaxOptions
                    {
                        UpdateTargetId = "div-form-daily",
                        HttpMethod = "POST",
                        OnBegin = "QuanLyDaiLy.BeforeSend",
                        OnFailure = "QuanLyDaiLy.Error",
                        OnComplete = "QuanLyDaiLy.Success",
                        InsertionMode = InsertionMode.Replace
                    }, new { @class = "form-update", @role = "form", @id = "search-form" }))
    {
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <label for="so-ct" class="col-xs-12 col-sm-12 col-md-2 input-sm">File excel <span class="text-red required">*</span></label>
                    <div class="col-xs-12 col-sm-12 col-md-10 input-sm">
                        @Html.TextBoxFor(model => model.File, new { type = "file", accept = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel", @class = "btn btn-default btn-sm", style = "width: 100%;" })
                    </div>
                    <div class="col-xs-12 col-sm-12 col-md-2"></div>
                    <div class="col-xs-12 col-sm-12 col-md-10 color-red" style="padding-left: 10px; margin-top: 10px">
                        @Html.ValidationMessageFor(model => model.File)
                    </div>
                    <div class="clear"></div>
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <label for="so-ct" class="col-xs-12 col-sm-12 col-md-2 input-sm">Giá nhân thêm</label>
                    <div class="col-xs-12 col-sm-12 col-md-10 input-sm">
                        @Html.TextBoxFor(model => model.Rate, new { @class = "form-control input-sm", placeholder = "Nhập tỷ giá cho giá sim..." })
                    </div>
                    <div class="col-xs-12 col-sm-12 col-md-2"></div>
                    <div class="col-xs-12 col-sm-12 col-md-10 color-red" style="padding-left: 10px; margin-top: 10px">
                        @Html.ValidationMessageFor(model => model.Rate)
                    </div>                     

                </div>
            </div>

            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <label for="so-ct" class="col-xs-12 col-sm-12 col-md-2 input-sm">Chọn đại lý <span class="text-red required">*</span></label>
                    <div class="col-xs-12 col-sm-12 col-md-10 input-sm">
                        @Html.DropDownListFor(model => model.AgentId, (IEnumerable<SelectListItem>)ViewBag.Agents, "Chọn...", new { @class = "form-control input-sm add-daily-sim filter-select" })
                    </div>
                    <div class="col-xs-12 col-sm-12 col-md-2"></div>
                    <div class="col-xs-12 col-sm-12 col-md-10 color-red" style="padding-left: 10px; margin-top: 10px">
                        @Html.ValidationMessageFor(model => model.AgentId)
                    </div>
                    <div class="clear"></div>
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <label for="so-ct" class="col-xs-12 col-sm-12 col-md-2 ">Đảm bảo đã đúng giá?</label>
                    <div class="col-xs-12 col-sm-12 col-md-1">
                        @Html.CheckBoxFor(model => model.IsSure.HasValue)
                    </div>
                    <label for="so-ct" class="col-xs-12 col-sm-12 col-md-2 ">Xóa sim đại lý</label>
                    <div class="col-xs-12 col-sm-12 col-md-1 ">
                        @Html.CheckBoxFor(model => model.IsXoaSimCu.HasValue)
                    </div>
                </div>
            </div>

            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                <div class="form-group">
                    <button type="button" class="btn bg-maroon btn-cons btn-sm" id="btn-import-excel">
                        <i class="fa fa-floppy-o fa-lg"></i>&nbsp; Lưu
                    </button>
                    <button class="btn btn-default btn-sm" type="button" onclick="location.href='@Url.Action("Index", "QuanLySim")'"><i class="glyphicon glyphicon-refresh fa-lg"></i>&nbsp; Quay về</button>
                </div>
            </div>
        </div>
    }
</div>

我调用 jquery 来验证表单:

 if (!$(form).valid()) return;

但是函数 form.valid() 是错误的,并在控制台中返回消息,如下所示: VM40309:1 Uncaught SyntaxError: 位置 0 处 JSON 中的意外标记 u

大家可以帮我解决这个问题吗?

谢谢大家

【问题讨论】:

  • 你在你的字段中使用了一些 Unicode 字符,尝试在你的字符串前面加上 'u' 来通知解析器这是预期的,例如placeholder = u"Nhập tỷ giá cho giá sim..."
  • @Geek Josh :如果我删除 @Html.CheckBoxFor(model => model.IsSure.HasValue) 和 @Html.CheckBoxFor(model => model.IsXoaSimCu.HasValue),它没有错误。而且我认为 Unicode 字符不是问题。
  • 您不能使用CheckBoxFor() 绑定到nullable boolIsSure 更改为bool 或使用EditorFor()(这将生成一个下拉列表,其中包含true、@987654330 的3 个值@和null)
  • @Stephen Muecke:我将数据类型从可为空的 bool 更改为 bool 但它也出错了。

标签: jquery json ajax validation asp.net-mvc-4


【解决方案1】:

表单验证代码无法正常工作。请检查并使用不显眼的 ajax 作为页面上的参考:jquery.unobtrusive-ajax.min.js

【讨论】:

    【解决方案2】:

    我认为这和https://stackoverflow.com/a/14822755/1808720是同一个问题 问题在于 jquery 1.9+ 和旧 jquery.validate.unobtrusive.js 的组合。

    https://github.com/aspnet/jquery-validation-unobtrusive/releases下载最新版本的jquery.validate.unobtrusive.js应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 2022-06-13
      • 2017-06-27
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      相关资源
      最近更新 更多