나는 JS 배열을 VB .net 코드 배후 메서드를 AJAX 호출 또는 다른 방법으로 전달하는 방법을 원한다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?AJAX를 통해 VB .Net 코드 배후에 자바 스크립트 배열 전달?
기본적으로 JS 배열의 값을 데이터베이스에 저장하려고합니다.
나는 JS 배열을 VB .net 코드 배후 메서드를 AJAX 호출 또는 다른 방법으로 전달하는 방법을 원한다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?AJAX를 통해 VB .Net 코드 배후에 자바 스크립트 배열 전달?
기본적으로 JS 배열의 값을 데이터베이스에 저장하려고합니다.
당신은 또한 PageMethod를 사용할 수 있습니다. [WebMethod]
특성을 가진 페이지 클래스의 공용 정적 메서드입니다. ScriptManager에서 EnablePageMethods="true"
을 수행하면 자바 스크립트에서 직접 페이지 메서드를 호출 할 수 있으며 일반적인 asp.net 페이지 수명주기를 건너 뜁니다. 파일 뒤에 페이지 클래스 코드에서
: (죄송합니다, 그것이 C#을, 그래서 VB를 모르는)
[WebMethod]
public static void SaveValues(string[] vals)
{
// Save vals to database
}
귀하의 스크립트 관리자 :
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
그리고 당신의 자바 스크립트 :
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
은 원하는 모든 것일 수 있습니다. 수행됩니다 자바 스크립트 및 .NET 유형 사이에 http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
직렬화/역 직렬화 : 그것은 직접 jQuery를 사용하여 PageMethods를 호출 할 수도 있습니다
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");
});
}
: 당신은 또한 단지 폐쇄를 사용하여 성공 콜백 인라인을 정의 할 수 있습니다 자동으로 (.NET JavaScriptSerializer에 의해).
PageMethods는 주목을 많이 얻지는 않지만 매우 유용합니다. 오버 헤드를 상당히 줄이고 Page.RegisterStartupScript와 같은 것을 사용할 때 이상한 버그를 방지하는 asp.net 페이지 라이프 사이클 전체 (Page_Load, Page_LoadComplete 등)를 수행하지는 않지만 아직 만들 필요가 없습니다 클라이언트 코드 (javascript)에서 바로 간단한 호출을 만들기위한 완전한 웹 서비스 또는 REST 서비스. 업데이트 패널의 혼란보다 훨씬 우월합니다.
그러나 장소의 모든 곳에서 사용하고 있다면 응용 프로그램 설계에서 "관심사를 분리"하지 못할 수도 있습니다. 별도의 서비스 계층이 필요할 수 있습니다. RESTful 및 SOAP 끝점을 단일 서비스에 추가하고 클라이언트 코드 (REST 끝점 사용)에서 직접 메서드를 호출하거나 코드 숨김 파일 (Add를 통해 SOAP 끝점 사용)에서 메서드를 직접 호출 할 수 있으므로 WCF 서비스를 실제로 즐기고 있습니다. 서비스 참조).
생각을위한 음식.
HiddenField (runat = server)을 사용하여 해당 값을 저장할 수 있습니다. 쉼표로 구분 된 값 (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
Btw,이 방법으로 Ajax가 필요 없다.) –