1

我不知道问题出在哪里,我的代码看起来很好,我很努力,但总是出错。

这是我的代码:

标记:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>

<script type="text/javascript">
    $(document).ready(function(){
        $("#Button1").click(function(){       
            var Name=document.getElementById('Text1').value
            var Class=document.getElementById('Text2').value
            var Data=JSON.stringify({Name:Name,Class:Class});
            alert(Data);       
            $.ajax({
                type: 'POST',
                contentType: "application/json; charset=utf-8",
                url: 'Default.aspx/InsertData',
                data:Data,
                async: false,
                success: function (response) {
                    $('#Text1').val('');
                    $('#Text2').val('');                 
                },
                error: function () { 
                    alert("Error") 
                }
            }); 
        });
    });
</script>

代码隐藏中的 ASP.NET AJAX 页面方法:

[WebMethod]
public string InsertData(string Name, string Class)
{
    SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con);
    cmd.Parameters.AddWithValue("@EmpName", Name);
    cmd.Parameters.AddWithValue("@Classs",Class);
    cmd.ExecuteNonQuery();
    con.Close();

    return "True";
}
4

3 回答 3

1

您不需要对其进行字符串化。

没有串化只是通过

"{'Name':'"+Name+"','Class':'"+Class+"'}"  

如果要传递字符串化对象,则必须如下所示

 JSON.stringify({'Name':Name,'Class':Class});

请参阅添加的报价。

var Data=JSON.stringify({'Name':Name,'Class':Class});
        alert(Data);       
        $.ajax({
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        url: 'Default.aspx/InsertData',
        data:Data,
        async: false,
         success: function (response) {
                             $('#Text1').val('');
                             $('#Text2').val('');

                         },
                         error: function ()
                         { alert("Error") }
        }); 

并在页面返回代码

    [WebMethod]
        public string InsertData(myobj getdat)
        {
            SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con);
            cmd.Parameters.AddWithValue("@EmpName", getdat.Name);
            cmd.Parameters.AddWithValue("@Classs",getdat.Class);
            cmd.ExecuteNonQuery();
            con.Close();

            return "True";
        }
public class myobj
{
public string Name {get;set;}
public string Class{get;set;}
}
于 2013-08-17T05:21:45.333 回答
1

尝试这个:

方法必须是静态的,如果它在aspx页面代码后面

[WebMethod]
    public static string InsertData(string Name, string Class)
    {
        SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con);
        cmd.Parameters.AddWithValue("@EmpName", Name);
        cmd.Parameters.AddWithValue("@Classs",Class);
        cmd.ExecuteNonQuery();
        con.Close();

        return "True";
    }
于 2013-08-17T05:25:18.050 回答
0

ASP.NET AJAX 页面方法必须是static,将您的代码更改为:

[WebMethod]
public static string InsertData(string Name, string Class)
{
    SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con);
    cmd.Parameters.AddWithValue("@EmpName", Name);
    cmd.Parameters.AddWithValue("@Classs",Class);
    cmd.ExecuteNonQuery();
    con.Close();

    return "True";
}

阅读为什么 ASP.NET AJAX 页面方法必须是静态的?解释为什么。

于 2013-08-17T05:30:42.197 回答