簡體   English   中英

使用ajax將javascript數組發送到后面的代碼(c#)

[英]Sending a javascript array to code behind(c#) using ajax

我對C#和javascript有點新意,所以雖然我的問題是具體的,但我對任何替代方案持開放態度。

我有一個值數組(我在javascript函數中創建),我想發送到我的代碼隱藏文件,以便在方法中使用。 從我使用ajax研究並使用JSON對數組進行字符串化似乎是最好的方法。

我的問題是

  1. 我可以使用這種方法傳遞數組嗎?

  2. 如何捕獲服務器端的信息(在我的代碼隱藏中?)

Javascript傳遞值

var jsonvalues = JSON.stringify(values);
var callback = window.location.href
$.ajax({
  url: callback
  type: "POST",
  contentType: 'application/json',
  data: jsonvalues
});

我已經看到很多使用[WebMethod]或某種WebService來捕獲數據的解決方案,我可以使用它在我的代碼隱藏文件中工作而不必返回數據嗎?

這是我在代碼隱藏文件中使用的內容

[WebMethod]
public static void done(string[] ids)
{
String[] a = ids;
}

我使用ASP.NET MVC為此編寫了一個深入的示例,但它可以很容易地適用於WebForms。

使用jquery將數據發送到MVC控制器

HTML和jQuery看起來幾乎完全相同,除了你調用WebMethod的地方。

如果您使用的頁面名為Default.aspx ,並且該方法稱為Done ,則WebMethod的URL將為Default.aspx/Done

<script>
       // Grab the information 
       var values = {"1,","2","3"};
       var theIds = JSON.stringify(values);

       // Make the ajax call
       $.ajax({
         type: "POST",
         url: "Default.aspx/Done", // the method we are calling
         contentType: "application/json; charset=utf-8",
         data: {ids: theIds },
         dataType: "json",
         success: function (result) {
             alert('Yay! It worked!');               
         },
         error: function (result) {
             alert('Oh no :(');
         }
     });
  </script>

您的WebMethod仍然是相同的。

[WebMethod]
public static void done(string[] ids)
{
   String[] a = ids;
   // Do whatever processing you want
   // However, you cannot access server controls
   // in a static web method.
}

最簡單的方法是使用ASP.NET MVC和數據綁定到列表。 因此,對於字符串列表,這將非常容易。 只需執行如下所示的控制器操作:

[HttpPost]
public ActionResult MyAction(string[] values)
{
    ... debug and see that values gets set to your array from javascript ...
}

然后傳遞data: values $.ajax調用中的data: values 沒有必要進行字符串化,jQuery會弄清楚要做什么。 對於更復雜的列表綁定,請檢查一下(以及許多其他資源,例如它討論綁定到復雜對象列表的奇特方法):

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

要從網頁或Web服務調用[WebMethod]方法,請查看本指南:

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

基本上,雖然您需要url是ServicePage.aspx/MethodName

使用runat = server將數據放在隱藏字段中。 發布表單並正常獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM