我想要做的就是通过AJAX调用或其他方式将JS数组传递给VB .net代码,如果还有其他方法?有人能指引我朝着正确的方向吗?通过AJAX将JavaScript数组传递给VB .Net代码后面的方法?
我基本上想要将JS数组中的值保存到数据库中。
我想要做的就是通过AJAX调用或其他方式将JS数组传递给VB .net代码,如果还有其他方法?有人能指引我朝着正确的方向吗?通过AJAX将JavaScript数组传递给VB .Net代码后面的方法?
我基本上想要将JS数组中的值保存到数据库中。
你也可以使用一个PageMethod的。这是您的网页类中的一种公共静态方法,具有[WebMethod]
属性。在你的ScriptManager中,你可以做EnablePageMethods="true"
,你可以直接从javascript调用你的页面方法,它将绕过正常的asp.net页面生命周期。
在隐藏文件的网页类代码:(对不起,不知道VB,所以C#是)
[WebMethod]
public static void SaveValues(string[] vals)
{
// Save vals to database
}
您的ScriptManager:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
而在你的javascript:
function save()
{
var values = ["Value1", "Value2", "Value3"];
var userContext = null; // You can use this for whatever you want, or leave it out
PageMethods.SaveValues(values, save_success, save_error, userContext);
}
save_success
和save_error
将是您的成功和错误回调。 userContext
可以是任何你想要的。你也可以只定义成功回调在线,使用封闭:
function save()
{
var values = ["Value1", "Value2", "Value3"];
var userContext = null; // You can use this for whatever you want, or leave it out
PageMethods.SaveValues(values, function(result) {
alert("Values have been saved");
},
function(err) {
alert("Error");
});
}
它也可以打电话给你的PageMethods直接使用jQuery: http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
序列化/反序列化的JavaScript和.NET类型之间给毁了你自动地(由.NET JavaScriptSerializer)。
PageMethods在聚光灯下没有太多的爱,但它们非常有用。你不会浏览整个asp.net页面生命周期(Page_Load,Page_LoadComplete等),这可以大大降低开销(并且在使用诸如Page.RegisterStartupScript之类的东西时可以避免怪异的bug),但是你不必创建一个完整的Web服务或REST服务,通过客户端代码(javascript)进行简单的调用。在我看来,远胜于更新面板的混乱。但是,如果你发现你在各处都使用它们,那么你的应用程序设计中可能不会正确地“分离你的顾虑”。单独的服务层可能是按顺序的。我真的很享受WCF服务,因为我可以将RESTful和SOAP端点添加到单个服务中,并直接从客户端代码(使用REST端点)或在代码隐藏文件中调用方法(通过添加使用SOAP端点服务参考)。
只是思考的食物。
您可以使用HiddenField(runat = server)来存储该值f.e.作为逗号分隔值(array.join())。 它的值存储在ViewState中。
Dim myJavaArray As Object, myValue As Variant, myArrayIdx As Long
Set myJavaArray = SomeExistingJavaArrayObject
' you can call .length like this because it is a property, not a method
For myArrayIdx = 0 to myJavaArray.length step 1
myValue = CallByName(myJavaArray, CStr(myArrayIdx), VbGet)
' do something with myValue here
Next
我会尽力谢谢。 – TheGambler 2010-07-01 18:33:05
顺便说一下,你甚至不需要使用这种方法的Ajax;) – 2010-07-01 18:43:00