[英]Sending a javascript array to code behind(c#) using ajax
我对C#和javascript有点新意,所以虽然我的问题是具体的,但我对任何替代方案持开放态度。
我有一个值数组(我在javascript函数中创建),我想发送到我的代码隐藏文件,以便在方法中使用。 从我使用ajax研究并使用JSON对数组进行字符串化似乎是最好的方法。
我的问题是
我可以使用这种方法传递数组吗?
如何捕获服务器端的信息(在我的代码隐藏中?)
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。
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.