Статьи

Вызов функции на стороне сервера из сценария на стороне клиента


Эта статья о том, как вы можете вызывать свой код за файловой функцией, т.е. написанной на стороне сервера функцией из кода на стороне клиента, т.е. используя jQuery.

Недавно в моем проекте появилось требование, чтобы я проверял, что ApplicationCode, т.е. значение, введенное пользователем, уже доступно в базе данных, или нет, то есть уникальное значение.

Вывод будет выглядеть, как показано ниже, если запись существует, она показывает ошибку «Запись существует», в противном случае она не отображает никаких записей.

Теперь в следующем посте я собираюсь обсудить, что является необходимым условием и зачем его использовать. 

Код сервера

Ниже метод вызывается из скрипта на стороне клиента, как вы можете видеть, что есть некоторые изменения в атрибуте метода, объявлении и определении, которые я собираюсь обсудить

 [WebMethod]
    [WebMethod]
    public static string IsExists(string value)
    {
        //code to check uniqe value call to database to check this
        return "True";
    }

Атрибут WebMethod

Прикрепленный атрибут WebMethod с методом Public указывает, что метод представлен как часть веб-службы XML. Атрибут сообщает .NET, что определенный публичный метод представлен как веб-вызываемый метод. Чтобы использовать этот атрибут, вам нужно использовать
System.Web.Services. Об этом атрибуте можно прочитать по адресу:
WebMethodAttribute Class

Статический метод

Статический метод не связан с экземпляром класса, который вызывается с использованием только classname.methodname ( ) т.е. нет необходимости создавать экземпляр.

Вот почему я отметил метод как статический. Он не может взаимодействовать со свойствами и методами экземпляра вашего класса Page, поскольку вызов метода страницы не создает ни экземпляра страницы, ни какого-либо из ее элементов управления. Методы страницы примерно эквивалентны сокращению для автономных веб-сервисов.

Файл .CS

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;//needed for the webmethod attribute
public

partial class _Default : System.Web.UI.Page
{
     protected void Page_Load(object sender, EventArgs e)
     {
          if (!IsPostBack)
               txtData.Attributes.Add("onblur", "focuslost()");
     }

     [WebMethod]
     public static string IsExists(string value)
     {
          return "True";
     }
}

В приведенном выше коде я зарегистрировал клиентское событие с помощью
onblur и прикрепленной функции
focuslost .
Код клиента в коде страницы .ASPX Вызов jQuery .ajax () Для вызова метода из кода на стороне клиента я использовал функцию jQuery под названием ajax, чтобы получить более подробную информацию об этой функции, которую вы можете прочитать о моем блоге: Jquery
Ajax Вызов функции


function IsExists(pagePath, dataString, textboxid, errorlableid) {
 
$.ajax({
     type:"POST",
     url: pagePath,
     data: dataString,
     contentType:"application/json; charset=utf-8",
     dataType:"json",
     error:
          function(XMLHttpRequest, textStatus, errorThrown) {
               $(errorlableid).show();
               $(errorlableid).html("Error");
          },
     success:
          function(result) {
               var flg = true;
               if (result != null) {
                    flg = result.d;
                    if (flg == "True") {
                         $(errorlableid).show();
                    }
                    else {
                         $(errorlableid).hide();
                    }
          }
     }
    });
}

В клиентском скрипте:

поскольку я должен проверить, существует ли код или нет, я прикрепил событие focusout () к своему элементу управления textbox, поэтому, когда фокус теряется, он вызывает ajax-вызов события TextChanged кода, стоящего за файлом.

url — содержит путь к странице, которая вызывается из кода на стороне клиента, т.е. из страницы aspx.

data — данные, отправляемые на сервер с клиента, это в основном строка json.

contentType — Тип содержимого, отправляемый на сервер.

dataType — ожидаемый формат данных из-за

ошибки сервера.
Вызывается, когда вызов метода сервера не

удался— Вызывается, когда вызов к методу сервера успешен, и возвращаемые данные из вызванного метода могут быть обработаны в этом методе.

 
Код страницы ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Async="true" Inherits="_Default" %>

Record exsits

Как и в приведенном выше коде,
функция
focuslost вызывает функцию
IsExists, которая, в свою очередь, вызывает функцию сервера и сообщает, что введенное значение является уникальным или нет.