1

jsonを使用してデータベースにデータを保存したい。次のコードを使用していますが、エラーが発生することも、データベースにデータを保存することもできません。私を助けてください。私はjsonが初めてです。

function myfun() {
        var name = $('[id$=txt1]').val();
        var email = $('[id$=txt2]').val();
        var address = $('[id$=txt3]').val();
        var salary = $('[id$=txt4]').val();
        var data = { name: name, email: email, address: address, salary: salary };
        alert(data.val());
        $.ajax({
            type: "POST",
            url: "Default.aspx/save",
            // data: "{'name':'" + name + "','email':'" + email + "','address':'" + address + "','salary':'" + salary + "'}",
            data: data,
            contentType: "application/json;charset=utf-8",
            datatype: "json",
            async: true,
            success: function(data) {
                $('[id$=lbl1]').val(data.d)
            },
            error: function(msg) {
                alert("failed: " + msg);
            }

        });

    }

---------------サーバー側のコード--------------------

[System.Web.Services.WebMethod]
    public String save(String name, String email, String address, Int32 salary)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandText="insert tbfirst values(@name, @email, @address, @salary)";
            cmd.Parameters.Add("@name",System.Data.SqlDbType.VarChar,50).Value = name;
        cmd.Parameters.Add("@email", System.Data.SqlDbType.VarChar,50).Value = email;
        cmd.Parameters.Add("@address", System.Data.SqlDbType.VarChar,50).Value = address;
        cmd.Parameters.Add("@salary", System.Data.SqlDbType.Int).Value = salary;

        cmd.ExecuteNonQuery();
        cmd.Dispose();
        return "Success";


    }
4

4 に答える 4

1

データを文字列化してみてください:

$.ajax({ 
....,
data: JSON.stringify(data),
....
于 2012-06-12T08:11:12.537 に答える
0

あなたの問題はおそらくajaxリクエストとは無関係ですが、代わりにすぐ上の行に関連しています

var data = { name: name, email: email, address: address, salary: salary };
alert(data.val());

データ オブジェクトにはメソッドがないためval、アラートのある行は失敗するはずです。ブラウザのデバッグ コンソールを見ると、「TypeError: Object # has no method 'val'」のようなエラー メッセージが表示されていないことに驚かれることでしょう。

于 2012-06-12T08:17:02.440 に答える
-1

ASP.NET(MVCではない)を使用している場合は、この保存WebMethodを静的なものとして使用する必要があります。私はこのスレッドで同様の答えを書きましたクリック。この回答で提供されているリンクを確認してください。これは非常に役立ちます。

また、Firebug(Firefoxの場合)や特定のブラウザが提供するその他のWebDeveloperツールなどのツールの使用を開始する必要があります。リクエストとレスポンスを調べることは非常に便利です。

于 2012-06-12T08:02:29.250 に答える