Обмен данными между HTML-страницами

Концепция, которую вы ищете, называется currying , и она связана с преобразованием функции и приложением частичной функции. Это полезно, когда вы снова и снова вызываете одну и ту же функцию с теми же самыми аргументами.

Пример реализации add(2)(6) через currying будет выглядеть примерно так:

function add(x,y) { 
  if (typeof y === 'undefined') {
    return function(y) {
      return x + y;
    }
  }
}

add(2)(4); // => 6

Кроме того, вы могли бы сделать что-то вроде этого ...

var add6 = add(6);
typeof add6; // => 'function'
add6(4);     // => 10
29
задан Muhammad Usman 4 February 2017 в 09:07
поделиться

4 ответа

Почему бы вам не сохранить свои значения в объектах хранения HTML5, таких как sessionStorage или localStorage, посетите HTML5 Storage Doc , чтобы получить более подробную информацию. Используя это, вы можете временно или постоянно хранить промежуточные значения локально, а затем обращаться к ним позже.

Чтобы сохранить значения для сеанса:

sessionStorage.getItem('label')
sessionStorage.setItem('label', 'value')

или более постоянно:

localStorage.getItem('label')
localStorage.setItem('label', 'value')

Таким образом, вы можете хранить (временно) данные формы между несколькими страницами, используя объекты хранения HTML5, которые вы может даже сохранить после перезагрузки.

58
ответ дан bentech 4 February 2017 в 09:07
поделиться

Я знаю, что это старый пост, но решил, что поделюсь своими двумя центами. @ Неджи прав в том, что вы можете использовать sessionStorage.getItem('label') и sessionStorage.setItem('label', 'value') (хотя у него были параметры setItem в обратном направлении, не так уж и много). Я гораздо больше предпочитаю следующее, я думаю, это более кратко:

var val = sessionStorage.myValue

вместо getItem и

sessionStorage.myValue = 'value'

вместо setItem.

Кроме того, следует отметить, что для хранения объектов JavaScript они должны быть преобразованы в строку, чтобы установить их, и проанализированы для их получения, например:

sessionStorage.myObject = JSON.stringify(myObject); //will set object to the stringified myObject
var myObject = JSON.parse(sessionStorage.myObject); //will parse JSON string back to object

Причина в том, что sessionStorage хранит все как строку, так что если вы просто скажете sessionStorage.object = myObject, все, что вы получите, это [объектный объект], который вам не очень поможет.

17
ответ дан user2359695 4 February 2017 в 09:07
поделиться

возможно, если вы хотите просто передать данные для использования в JavaScript, вы можете использовать такие хеш-теги, как этот

http://localhost/project/index.html#exist

, поэтому один раз, когда вы закончите извлечение данных, отобразите сообщение и измените окно. location.hash к подходящему значению ... теперь всякий раз, когда вы обновите страницу, hashtag не будет присутствовать
ПРИМЕЧАНИЕ: , когда вы будете использовать это вместо запроса, строка запроса отправляет данные не может быть восстановлен / прочитан сервером

5
ответ дан Parv Sharma 4 February 2017 в 09:07
поделиться

Ну, на самом деле вы можете отправлять данные через JavaScript - но вы должны знать, что это источник эксплойта № 1 на веб-страницах, так как это XSS:)

Я лично предложил бы вместо этого использовать формуляр HTML и изменить данные JavaScript на стороне сервера.

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

Эти две ссылки могут вам помочь, он показывает пример через бэкэнд Node, но вы понимаете, как это работает:

Ссылка 1

И, из Конечно, спецификация CORS:

Ссылка 2

~ Cheers

3
ответ дан Mr. Alien 4 February 2017 в 09:07
поделиться
Другие вопросы по тегам:

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