0

HTML本文に「ボタンアカウント」という名前のHTMLボタンがあり、ユーザーがボタンをクリックしたときにaspxページをajaxで更新したい

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 を返します。私はこれが私の間違いであることを知っています。どのように解決しますか?

どんな助けも適切です...

4

3 に答える 3

2

"<html> ..."サーバーはおそらく、予期した JSON 応答ではなく、エラー ページ (例: ) を返します。

fiddler、chrome の開発者ツール、または同様のツールを使用して、サーバーが返す正確な答えを確認します。


あなたのコメントに応えて:

返された HTML ページの内容を確認します。サーバー側のコード (未処理の例外など) またはサーバー側の構成が原因である可能性があります。

于 2013-05-14T11:08:20.370 に答える
1

これを変える

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

これに

var dataObj = {
                "username": user,
                "password": 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' }";

    }
于 2013-05-14T11:11:10.320 に答える