我想要做的就是通過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