Запустите запрос БД (SQL Server 2005) с AJAX. Является ли это возможным? - PullRequest
0 голосов
/ 01 марта 2009

Я никогда не работал с ajax.

Мне нужно знать, возможно ли использовать ajax для запуска запроса на БД (sql server 2005).

Моя цель - выполнить запрос с обновлением страницы.

У вас есть идеи?

Ответы [ 3 ]

5 голосов
/ 01 марта 2009

Напрямую, нет. И это очень хорошая вещь, поскольку JavaScript обычно работает на ненадежной машине.

Но должно быть довольно легко запустить AJAX с помощью обратного вызова (например, сообщения), а затем выполнить запрос на стороне сервера.

4 голосов
/ 01 марта 2009

Как сказал MarkusQ , это невозможно сделать напрямую, но вы можете вызвать веб-сервис или метод страницы, чтобы выполнить запрос к базе данных и вернуть результат на стороне клиента.

Как-то так для метода страницы (это не в моей голове и не проверено. Я также предполагаю, что вы используете asp.net 3.5)

public partial class _Default : Page 
{
  [WebMethod]
  public static string PerformDatabaseQuery()
  {
      using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString)
      {
          using (SqlCommand cmd = con.CreateCommand())
          {
              cmd.CommandText = "SELECT records FROM myTable";
              cmd.CommandType = CommandType.Text;

              con.Open();

              SqlDataReader reader = cmd.ExecuteReader();
              StringBuilder sb = new StringBuilder();

              while (reader.Read())
              {
                   sb.Append((string)reader["records"]); 
                   //May want to do some other formatting here
              }

              return sb.ToString();
          }
      }
  }
}

затем вызовите метод страницы со стороны клиента. Я собираюсь использовать jQuery здесь

$.ajax({
  type: "POST",
  url: "Default.aspx/PerformDatabaseQuery",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(result) {
    //Do something with the returned data
  }
});

Вы можете вызвать его, используя JavaScript и прокси-класс JavaScript, который создается при установке EnablePageMethods = true в элементе управления ScriptManager.

function CallPerformDatabaseQuery()
{
    PageMethods.PerformDatabaseQuery(onSuccess,onFailed);
}

function onSuccess(result,userContext,methodName)
{
  // Do something with returned data
}

function onFailed(error,userContext,methodName)
{
  alert("An error occurred")
}
0 голосов
/ 07 марта 2009

AJAX => Клиентская сторона PHP / ASP / X => Серверная часть (также базы данных)

По сути, все, что происходит на стороне клиента, происходит "прямо сейчас", тогда как сценарии на стороне сервера "уже произошли".

Вы не можете выполнить запрос к базе данных с помощью JS или чего-либо подобного, AJAX - это не что иное, как иллюзия пользовательского опыта, даже когда мы можем говорить о «извлечении записей из БД через AJAX», а это не совсем то, что происходит.

Если AJAX просто больше JavaScript (Asynchronus JS, то есть происходит в своей собственной «временной шкале» / потоке, а не в главном), то это будет означать, что выборка данных из БД (или выполнение чего-либо через AJAX в этом отношении) ) было бы то же самое, что иметь ссылку на скрипты, которые статически это делают, то есть вы нажимаете здесь, вы попадаете на страницу, которая извлекает (на стороне сервера) и отображает (на стороне клиента) информацию.

Теперь представьте, что вы просто делаете именно это, но вместо того, чтобы выполнять основной поток для этого действия, вы запускаете асинхронный поток (который будет работать так же, как любая другая ссылка, например), который будет публиковать / получать данные и получать X-ответ, который вы можете обрабатывать позже через JS, что дает вам иллюзию «запросов в реальном времени».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...