2012-05-28 55 views
0

非法調用我是新來的jQuery,我顯然是想從JavaScript調用使用AJAX和jQuery的c鋒利的功能,我也想通過一些參數,同時調用C-尖銳功能。 。 這是我嘗試做相同的:得到錯誤,如jQuery的

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] 
    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; 
     } 
    } 

的WebMethod當我運行代碼,我得到這樣一個錯誤:

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 

回答

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") 
};​ 
+0

是的,我已經改正了,但現在我得到的內部服務器錯誤500 – Snedden27

+1

@ Snedden27。好。所以現在問題已經解決了。服務器代碼中存在其他問題。你應該調試它,看看問題在哪裏,如果你找不到它,請提出另一個問題。 – gdoron

0

假設St_PeriodEn_Period是HTML,你將需要添加值數據input元素對象不是元素,例如:

var _data = { 

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

它們是作爲隱藏字段的值,反正我加的是.value的擴展,但現在的錯誤是這樣 POST HTTP://本地主機:50060 /莫古利/ maps.aspx/myFunc的500(內部服務器錯誤)的jquery.js:8102 jQuery.ajaxTransport.send jquery.js:8102 jQuery.extend.ajax jquery.js:7580 存儲地圖maps.aspx:398 onclick – Snedden27

+0

@ Snedden27:錯誤現在在服務器上。看你的代碼,它可能是一個SQL錯誤,你註釋掉添加'@的by'參數。你能通過Visual Studio調試請求嗎? – detaylor

+0

是啊,它調用myFunc的代碼時,我在Visual Basic debugg,我覺得JSON字符串是不正確的格式或類似的東西,等我將提出新問題,以澄清事情 – Snedden27