0

私はjqueryを初めて使用し、ajaxとjqueryを使用してjavascriptからc-sharp関数を呼び出そうとしています。また、c-sharp関数を呼び出すときにいくつかのパラメーターを渡したいと思います。これが私が同じことをしようとしている方法です。 :

var _data = {

    '_mStart': document.getElementById("St_Period"),
    '_mEnd': document.getElementById("En_Period")
};

$.ajax({
    type: "POST",
    url: "maps.aspx/myFunc",
    data: _data,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        alert("success!")
    }

});​

そしてこれがaspx.csの私のwebmethodです

  [WebMethod]
    public static void myFunc(DateTime? _mStart, DateTime? _mEnd)
    {

        try
        {
            //string st = St_Period.Value.ToString();
            //string end = En_Period.Value.ToString();
            SqlConnection con=new SqlConnection("server=SWAPPS_LAP\\SQLEXPRESS;Initial Catalog=moogle;Integrated Security=True;MultipleActiveresultSets=true");
            SqlCommand cmd = new SqlCommand();
            con.Open();
            cmd = new SqlCommand("insert into MEDIA_BOOKING(ST_PERIOD,END_PERIOD,ENTERED_BY,ENTERED_ON) values(@st,@end,@by,@on)", con);
            cmd.Parameters.AddWithValue("@st", _mStart);
            cmd.Parameters.AddWithValue("@end", _mEnd);
            //cmd.Parameters.AddWithValue("@by", Session["login"].ToString());
            cmd.Parameters.AddWithValue("@on", DateTime.Now);
            cmd.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

コードを実行すると、次のようなエラーが発生します。

Uncaught TypeError: Illegal invocation jquery.js:7601
jQuery.extend.param.add jquery.js:7601
buildParams jquery.js:7658
buildParams jquery.js:7653
buildParams jquery.js:7653
jQuery.extend.param jquery.js:7621
jQuery.extend.ajax jquery.js:7467
savebook maps.aspx:398
onclick
4

2 に答える 2

2

DOM要素ではなく、要素の値を渡す必要があります。

var _data = {
    '_mStart': document.getElementById("St_Period").value,
    '_mEnd': document.getElementById("En_Period").value
};​

それ以外の:

var _data = {
    '_mStart': document.getElementById("St_Period"),
    '_mEnd': document.getElementById("En_Period")
};​
于 2012-05-28T08:02:34.650 に答える
0

St_PeriodEn_Periodがhtml要素であると仮定するとinput、要素ではなくデータオブジェクトに値を追加する必要があります。例:

 var _data = {

            '_mStart': document.getElementById("St_Period").value,
            '_mEnd': document.getElementById("En_Period").value
        };
于 2012-05-28T08:03:32.927 に答える