【问题标题】:SyntaxError: JSON.parse: unexpected character error unexpected token <SyntaxError:JSON.parse:意外字符错误意外令牌<
【发布时间】:2013-05-14 11:05:50
【问题描述】:

我在 html 正文中有一个带有“按钮帐户”名称的 html 按钮,并希望在用户单击按钮时使用 ajax 更新 aspx 页面

我在 google chrom 中收到此错误

SyntaxError: JSON.parse: 意外字符

这在火狐中

SyntaxError: JSON.parse: 意外字符

这是我的代码

<script type="text/javascript" >
    $(document).ready(function () {

        $("#button-account").bind("click", "accountRegister");

        function accountRegister() {
            var waitObj = "<span class='wait' > <img  src='Resource/Images/loading.gif' alt='' /> </span>";
            var user = $("[name='username']").val();
            var pass = $("[name='password']").val();
            var dataObj = {
                "username": user,
                "password": pass,
            };
            $.ajax({
                type: "POST",
                url: "Checkout.aspx/login",
                data: dataObj,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                beforSend: function () {
                    $(this).attr("disabled", "true");
                    $(this).after(waitObj);
                },
                success: function (msg) {
                    // Replace the div's content with the page method's return.
                    alert("success");
                    $("#checkout").slideUp("slow");
                    $("#payment-address").slideDown("slow");
                },
                error: function (msg) {
                    alert("error");
                },
                complete: function () {
                    $(this).attr("disabled", "false");
                    $(".wait").remove();
                },
            });
        }


    });





</script>

这是我的网络方法

[WebMethod]
    public static string login()
    {
        //bool UserIsValid = false;
        //string userName = "";
        //string pass = "";
        //MembershipUser u = Membership.GetUser(userName);
        //pass = u.GetPassword();
        //if (UserIsValid)
        //{
        //  //  returnAsHtml = "true";

        //}
        //else
        //{
        //    //returnAsHtml = "use is not valid";

        //}
        JavaScriptSerializer js = new JavaScriptSerializer();
        string result = js.Serialize("{ a:'1' }");
        return result;

    }

和提琴手返回 200 状态。 但返回 html。我知道这是我的错误。怎么解决?

任何帮助都是appriciate...

【问题讨论】:

  • 你能显示代码中调用JSON.parse()的部分吗?

标签: c# jquery asp.net ajax json


【解决方案1】:

服务器可能会返回一个错误页面(例如"&lt;html&gt; ..."),而不是您预期的 JSON 响应。

使用fiddler、chrome 的开发者工具或类似工具来检查服务器返回的确切答案是什么。


回应您的 cmets:

检查返回的 HTML 页面的内容是什么。这可能是由您的服务器端代码(例如未处理的异常)或服务器端配置引起的错误。

【讨论】:

  • 你好,fiddler结果为200,ajax运行成功
  • @Edalat:但是响应的内容是什么?它是预期的 JSON 还是 HTML(错误)页面?
  • 不幸的是,它返回了 html。
【解决方案2】:

改变这个

var dataObj = {
                "username": user,
                "password": pass,
            };

到这里

var dataObj = {
                "username": user,
                "password": pass
            };

pass后多了一个逗号,("password": pass,),所以无法正确序列化。

编辑:

试试这个

[WebMethod]
    public static string login()
    {
        //bool UserIsValid = false;
        //string userName = "";
        //string pass = "";
        //MembershipUser u = Membership.GetUser(userName);
        //pass = u.GetPassword();
        //if (UserIsValid)
        //{
        //  //  returnAsHtml = "true";

        //}
        //else
        //{
        //    //returnAsHtml = "use is not valid";

        //}

        //JavaScriptSerializer js = new JavaScriptSerializer();
        //string result = js.Serialize("{ a:'1' }"); // no need to serialize 
        return "{ a:'1' }";

    }

【讨论】:

    【解决方案3】:

    对不起!!!

    在其他部分a中称为this

     $('#button-login').live('click', function () {
        $.ajax({
            url: 'Checkout.aspx?login',
            type: 'post',
            data: $('#checkout #login :input'),
            dataType: 'json',
            beforeSend: function () {
                $('#button-login').attr('disabled', true);
                $('#button-login').after('<span class="wait">&nbsp;<img src="Resource/Images/loading.gif" alt="" /></span>');
            },
            complete: function () {
                $('#button-login').attr('disabled', false);
                $('.wait').remove();
            },
            success: function (json) {
                $('.warning, .error').remove();
    
                if (json['redirect']) {
                    location = json['redirect'];
                } else if (json['error']) {
                    $('#checkout .checkout-content').prepend('<div class="warning" style="display: none;">' + json['error']['warning'] + '</div>');
    
                    $('.warning').fadeIn('slow');
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2011-12-20
      • 2015-11-19
      • 2018-08-27
      相关资源
      最近更新 更多