Что происходит в сервере, когда загрузка страницы отменяется в браузере?

Вероятно, вы можете использовать text_field_tag, а вот пример ссылка

<%= form_for @post do |f| %>
  <%= f.label :variable_name %>:
  <%= f.text_field :variable_name %>
# use text_field_tag instead of f.text_field <%= text_field_tag 'my_var', "", class: "class_name" %> <%= text_field_tag 'my_var', "", class: "class_name", :readonly => true %> <%= f.submit %> <% end %>

Я дал вам два примера, и text_field_tag ​​сгенерирует HTML-код ниже


первое текстовое поле позволит пользователю ввести значение
, если вы не хотите, чтобы пользователь изменил значение
, но вы можете изменить его с помощью JavaScript, который вы можете использовать readonly = true в качестве второго примера выше

Между тем, из вашего контроллера вы можете получить к нему доступ через параметры [: my_var], как показано ниже

  def create
    @post = Post.new(post_params)
    var1  = params[:my_var]
    # here you can process var1 and you don't have to have a field for var1 in your database
    ...
  end

5
задан hectorsq 29 October 2008 в 04:10
поделиться

4 ответа

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

В Java серверы приложений EE (Tomcat и WebLogic, вероятно, другие также), Вы получите следующее исключение:

java.net.SocketException: Connection reset by peer: socket write error
5
ответ дан 14 December 2019 в 09:04
поделиться

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

У меня есть мало знания об этих вещах, хотя, но это было бы моим предположением.

0
ответ дан 14 December 2019 в 09:04
поделиться

Если соединение было повреждено, прежде чем запрос был полностью отправлен к серверу, обработка ответа не произойдет.

Если запрос был отправлен полностью, это инициировало обработку серверной стороны, и поколение ответа продолжится несмотря на поврежденное соединение.

В ASP.NET можно обнаружить это при помощи Ответа. IsClientConnected для остановки обработки, если клиент больше не соединяется, сохраняя процессорное время и возвратив поток сразу пулу потоков.

1
ответ дан 14 December 2019 в 09:04
поделиться

PHP понимает три состояния соединения: НОРМАЛЬНЫЙ, ПРЕРВАННЫЙ и ТАЙМ-АУТ. Можно изменить политику PHP в отношении ПРЕРВАННЫХ соединений (по умолчанию, сценарий завершается) с ignore_user_abort () функция. От раздела примечаний:

"PHP не обнаружит, что пользователь прервал соединение, пока попытка не предпринята, чтобы отправить информацию клиенту".

Обратите внимание, что, если вывод Вашего сервера буферизуется, отправление не может сразу произойти.

См. страницу PHP на обработке соединения для получения дополнительной информации.

1
ответ дан 14 December 2019 в 09:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: