Вызов серверного метода в клиентской функции (Javascript)

#javascript #asp.net #client #client-side #serverside-javascript

#javascript #asp.net #клиент #на стороне клиента #серверная часть-javascript

Вопрос:

кто-нибудь может мне помочь в вызове моего VB.NET метод в моей функции javascript? мой метод не является общим / статическим и ничего не возвращает. Он просто сохраняет данные в базе данных и перенаправляет пользователя. Пожалуйста, помогите мне, вот мой код:

Метод VB

   Public Function SaveVehicles()
          Dim res As Boolean
             If res = True Then
            Dim sModel As String = cboModel.SelectedValue
            Dim sVariant As String = cboVariant.SelectedValue
            Dim sColor As String = cboColor.SelectedValue

            cboModel.SelectedValue = sModel
            cboVariant.SelectedValue = sVariant
            cboColor.SelectedValue = sColor


            Dim oData As New WebServVehSwapping
            Dim strSql As String
            Dim sDealer As String
            Dim sUserName As String

            'sDealer = "TBP01"
            sDealer = Trim(Request.QueryString("dealercode"))
            If sDealer = "" Then sDealer = "TBP01"
            sUserName = "User1"

            '------------------------------------------
            strSql = oData.InsertTblRequirement( _
              sDealer _
             , Now.ToString _
             , sUserName _
             , cboColor.Text.Trim _
             , cboModel.Text.Trim _
             , cboVariant.Text.Trim, "Open")
            MsgBox("OKAY")
            Response.Redirect("MyRequirements.aspx?DealerCode=" amp; sDealer)
        Else
            'do Nothing
        End If
    End Function
  

и вот моя функция Javascript

    function ConfirmView()
    {   
        var Ok = confirm('There is/are existing vehicle(s) in Network Vehiches for sale, View Vehicle(s)?');
        if(Ok==true)
        {

       location.href = 'NetworkVehiclesforSale.aspx';
        return false;
        }
        else if (Ok!=true)
        {

         //THE VB METHOD GOES HERE     
      }
}
  

Я пробовал обработчик обратного вызова, и он просто работает с функцией, которая возвращает что-то / строку

и я пробовал Pagemethod, но он работает только со статической / совместно используемой функцией. пожалуйста, помогите мне, мне это действительно очень нужно. Пожалуйста. Спасибо

Комментарии:

1. Если мой ответ вам помог, я был бы признателен, если бы вы отметили его как ответ или задали дополнительный вопрос.

Ответ №1:

Веб-службы .Net не могут творить чудеса, т. Е. вы не можете выдать перенаправляющий ответ на Ajax-запрос на сервере и ожидать, что будет перенаправлена вся страница. Единственное, что произойдет, это то, что вызов Ajax будет перенаправлен на другую страницу и попытается получить данные оттуда. Если вы хотите изменить страницу в клиентском браузере, вы должны сделать это на стороне клиента с помощью JavaScript, например document.location = url_returned_by_your_function_through_ajax_call .

Комментарии:

1. как насчет того, как я могу вызвать метод SaveVehicles()?

Ответ №2:

Возможно, вы захотите прочитать «Введение в создание служб Windows Communication Foundation Services» — http://msdn.microsoft.com/en-us/library/aa480190.aspx

И особенно: «Руководство по проектированию и созданию веб-служб RESTful с WCF 3.5» — http://msdn.microsoft.com/en-us/library/dd203052.aspx

И ознакомьтесь с некоторыми библиотеками javascript, которые упрощают вызов веб-служб RESTful, такими как jQuery — http://www.jquery.com /

С помощью jQuery вы могли бы выполнить вызов на стороне вашего сервера VB.NET код, подобный этому:

 $.ajax({  
    type: "GET",  
    contentType: 'text/json',  
    dataType: 'json',  
    url: "https://URL-TO-SERVICE-HERE/...",  
    timeout: 10000,  
    error: function () {  

        // Deal with the error  

    },  
    success: function (data) {  

        // Do something with the result
        // Example:
        if (data.dealerCode) 
            location.href = 'MyRequirements.aspx?DealerCode='   data.dealerCode;


    }  
});  
  

Комментарии:

1. и в какой части этого кода я могу вызвать метод SaveVehicles()?

2. Вы бы поместили этот фрагмент javascript, где вы написали «//МЕТОД VB ИДЕТ СЮДА» в вашем вопросе. Вы бы изменили «URL-TO-SERVICE-HERE» во фрагменте, чтобы он указывал на ваш файл .svc (служба WCF), который будет запускать ваш метод «SaveVehicles()».