通过AJAX将Javascript数组传递给VB.Net代码隐藏方法?
我想做的就是通过AJAX调用或其他方式(如果有其他方式)将JS数组传递给VB.net代码隐藏方法?有人能给我指出正确的方向吗 我基本上希望将JS数组中的值保存到数据库中。您可以使用(runat=server)将该值存储为逗号分隔的值()。通过AJAX将Javascript数组传递给VB.Net代码隐藏方法?,.net,javascript,.net,Javascript,我想做的就是通过AJAX调用或其他方式(如果有其他方式)将JS数组传递给VB.net代码隐藏方法?有人能给我指出正确的方向吗 我基本上希望将JS数组中的值保存到数据库中。您可以使用(runat=server)将该值存储为逗号分隔的值()。 它的值存储在Viewstate中。我使用Tim描述的方法,但也使用和Json库,并使用以下代码解析数组: var strArray = JSON.stringify(array); $("#<%=hidField.ClientID %>").val
它的值存储在Viewstate中。我使用Tim描述的方法,但也使用和Json库,并使用以下代码解析数组:
var strArray = JSON.stringify(array);
$("#<%=hidField.ClientID %>").val(strArray);
var strArray=JSON.stringify(数组);
$(“#”)val(strArray);
您也可以使用PageMethod。它是页面类中的公共静态方法,具有[WebMethod]
属性。在ScriptManager中,您可以执行EnablePageMethods=“true”
,您可以直接从javascript调用页面方法,它将绕过正常的asp.net页面生命周期
在您的页面类代码隐藏文件中:(对不起,不知道VB,所以是C)
您的脚本管理器:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
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");
});
}
也可以使用jquery直接调用PageMethods:
javascript和.NET类型之间的序列化/反序列化由.NET JavaScriptSerializer自动完成
PageMethods在聚光灯下不太受欢迎,但它们非常有用。您不必经历整个asp.net页面生命周期(page_Load、page_LoadComplete等),这大大减少了开销(并在使用page.RegisterStartupScript等工具时避免了奇怪的错误),但您不必创建完整的web服务或REST服务来直接从客户端代码(javascript)进行简单调用。在我看来,这比混乱的更新面板要好得多
但是,如果您发现到处都在使用它们,那么您可能无法在应用程序设计中正确地“分离关注点”。可能需要一个单独的服务层。我一直很享受WCF服务,因为我可以将RESTful和SOAP端点添加到单个服务中,并直接从客户机代码(使用REST端点)或代码隐藏文件(通过添加服务引用使用SOAP端点)调用这些方法
值得思考。顺便说一句,这种方法甚至不需要Ajax;)
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
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");
});
}
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