0

ユーザー/電子メールが存在するかどうかを確認するために、正しい入力とサーバー検証のためのjquery検証を試みています。唯一の問題は、これがjquery検証に合格した後でも、何らかの理由でクライアント側からパラメーターが常に送信されるとは限らないことです。サーバー側のメソッドの最初にブレークポイントに入ろうとしましたが、そこに入ることはめったになく、params にデータを挿入した後にアラートを配置し、json が正常に見えることを確認しました。Jquery、asp.net、c# を使用しています。

クライアントコード:

var user = $("#txt_register_username").val();
            var password = $("#txt_register_password").val();
            var firstname = $("#txt_register_firstname").val();
            var lastname = $("#txt_register_lastname").val();
            var birthdate = $("#txt_register_birthdate").val();
            var picture = $("#txt_register_picture").val();
            var car = $("#txt_register_car").val();
            var email = $("#txt_register_email").val();
            var home = $("#txt_register_home").val();
            var cell = $("#txt_register_cell").val();
            var params = "{username:" + user
            + ",firstname:" + firstname
            + ",lastname:" + lastname
            + ",birthdate:" + birthdate
            + ",pic:123"
            + ",carowned:" + car
            + ",email:" + email
            + ",password:" + password
            + ",home:" + home
            + ",cell:" + cell
            + "}";
            $.ajax
            ({
                type: "POST",
                url: "Register.aspx/AddUser",
                data: params,
                contentType: "application/json; charset=utf-8",
                dateType: "json",
                success: function (result) {
                    alert(result.d);

                }
            });

pic は後でバイナリになるため、一時的なものであり、文字列であるため無視してください。

サーバーコード:

[WebMethod]
        public static string AddUser(string username, string firstname, string lastname, string birthdate, string pic, string carowned, string email, string password, string home, string cell)
        {
            DataSet1TableAdapters.UsersTableAdapter userAdapter = new DataSet1TableAdapters.UsersTableAdapter();
            DataSet1.UsersDataTable userTable = new DataSet1.UsersDataTable();
            userAdapter.Fill(userTable);
            int index = 0;
            Console.WriteLine("entering valiation area");
            foreach (DataRow dr in userTable.Rows)
            {
                if (userTable.Rows[index]["username"].Equals(username))
                {
                    Console.WriteLine("a user who already exists tried to create an account");
                    return "user already exists with that username";        
                }
                if (userTable.Rows[index]["email"].Equals(email))
                {
                    Console.WriteLine("a user who already exists with an email tried to create an account");
                    return "user already exists with that email";
                }
                index++;
            }
            try
            {
                userAdapter.Insert(username, firstname, lastname, birthdate, pic, carowned, email, password, home, cell);
                Console.WriteLine("new user added to db");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return "oops , something went wrong.";
            }
            return "new user added to database.";

        }
4

5 に答える 5

4

試す;

var params = JSON.stringify({
             username:user,
            firstname :firstname,
            lastname:lastname,
            birthdate: birthdate,
            pic:123,
            carowned:car,
            email:email,
            password: password,
            home: home,
            cell: cell
           });
于 2013-05-07T09:28:55.240 に答える
0

これは、AJAX 呼び出しが「GET」ではなく「POST」であるためです。そのため、パラメーターの扱いが異なります。

次のようなものが必要です:

var data = $.toJSON(params);

dataではなく、AJAX リクエストでオブジェクトを送信しますparams

于 2013-05-07T09:28:51.203 に答える
0

データはjsonオブジェクトで送信する必要がありますが、文字列として送信しています! 構文を次のように切り替えます。

var params = {username: + user
            ,firstname: + firstname
            ,lastname: + lastname
            ,birthdate: + birthdate
            ,pic:123
            ,carowned: + car
            ,email: + email
            ,password: + password
            ,home: + home
            ,cell: + cell
            };

編集: 私があなただったら、 dataType プロパティを削除して、それがどのように機能するかを確認します!

于 2013-05-07T09:27:40.810 に答える
0

Jeremy が述べたように、あなたの JSON は正しくありません

{"username" : "user", "firstname" : "firstname" .... } のようなものにする必要があります。

fiddler をダウンロードすると、どのような問題が発生しているかを確認できます。投稿された json を取得して JSONLint.com で実行すると、json が正しく形成されていない理由がわかります。

また、json2.js を取得すると、dotnet dreamer が示したことを行うことができます。stringify は、新しいブラウザーの一部に組み込まれている可能性があります。だから私は最初にチェックします、最近はあまりajaxのことをしていません

于 2013-05-07T09:42:37.960 に答える