SyntaxError:JSON.parse:MVC中的意外字符

时间:2014-05-28 15:34:44

标签: jquery asp.net-mvc

当我使用jQuery提交表单时:

$('#saveButton').click(function () {                
                if (true) {
                    $('#submitForm').submit();
                } 
            });

我在文件jquery....min.js中收到错误:

  

SyntaxError:JSON.parse:第1行第1列的意外字符   JSON数据

我使用asp.net MVC生成表单:

@using (@Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { id = "submitForm" }))

提交按钮。我使用的是顶级的。发生这种情况时,不会点击按钮1:

<input type="button" id="saveButton" class="bigButton" value="Save" />
<input type="submit" id="submitRequestButton" class="bigButton" value="Submit" />

我查看FF上的网络标签,但我没有看到POST。如何追踪或缩小导致此问题的原因?

更新

控制台窗口中的代码是我得到的,它指向我缩小的jQuery lib:

/ *! jQuery v2.1.0 | (c)2005年,2014年jQuery Foundation,Inc。| jquery.org/license * / !function(a,b){&#34; object&#34; == typeof module&amp;&amp;&#34; object&#34; == typeof module.exports?module.exports = a.document?b(a, !0):function(a){if(!a.document)抛出新的错误(&#34; jQuery需要一个带文档的窗口&#34;);返回b(a)}:b(a)}(& #34; undefined&#34;!= typeof window?window:this,function(a,b){var c = [],d = c.slice,e = c.concat,f = c.push,g = c .indexOf,H = {},I = h.toString,J = h.hasOwnProperty中,k =&#34;&#34; .trim,L = {},M = a.document,N =&#34; 2.1.0&#34;,o = function(a,b){return new o.fn.init(a,b)},p = / ^ - ms - /,q = / - ([\ da-z] )/ gi,r = function(a,b){return b.toUpperCase()}; o.fn = o.prototype = {jquery:n,constructor:o,selector:&#34;&#34;,length :0,toArray:function(){return

......这种情况会持续大约1000多行。

1 个答案:

答案 0 :(得分:2)

我通过从代码中删除MVC验证脚本和我自己的自定义验证脚本来解决问题:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/conditional-validation.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/customItemRequestValidation.js")" type="text/javascript"></script>

我编写了新的自定义验证,而不是基于MVC的验证。我不需要MVC内置的验证。我不知道为什么其中一个文件导致JSON解析错误。

我删除的旧自定义验证脚本做了类似的事情:

$.validator.addMethod('requiredif',

$.validator.unobtrusive.adapters.add(
    'requiredif',

我的猜测是我的一个旧的自定义验证脚本搞砸了,或者我的新验证脚本以某种方式与MVC的验证脚本冲突。