2011-02-01 3 views
2

Есть ли способ, используя javascript, проверить, была ли страница результатом запроса POST или GET?Проверьте, была ли выбрана страница с помощью POST

Причина в том, что у меня есть страница поиска sharepoint, в которой мы создали пользовательский javascript для автоматического выбора определенного значения. Для новых запросов это не проблема, но по мере того, как страницы с предыдущими результатами реализуются с помощью обратной передачи, значение получает сброс, а следующие страницы получают другой результат, если значение было изменено.

Пример: Значение по умолчанию - «Выбрать» (= нет значения). Наш скрипт устанавливает значение «Value 1». Новый пользователь переходит на страницу поиска, меняет его на «Value 2» и выполняет поиск. Когда он вернет результаты, наш скрипт вернет его к «Value 1», и когда он нажмет «Next», он получит результаты для страницы 2 для поиска «Value 1» вместо «Value 2».

Решение должно состоять в том, чтобы проверить, была ли страница отправлена ​​с использованием POST, и только сбросить значение, если оно не было.

+0

Лучшим решением будет не только установить значение, если оно в настоящее время не установлено? Или, что еще лучше, создать HTML с правильным предварительно выбранным значением в первую очередь и не иметь какого-либо JavaScript, касающегося настройки вообще? –

ответ

2

Вы можете использовать Page.IsPostBack свойство на стороне сервера, чтобы избежать формирования сброса части клиентского сценария во время постбэков:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    if (!IsPostBack) { 
     // Render the script that resets the selection to "Value 1". 
    } 

    // Render the rest of the script. 
} 
+0

Мне пришлось создать веб-сайт, чтобы вставить javascript, но оказалось, что это было самое простое решение :) –

1

Я думаю, что простым ответом было бы то, что если бы это был запрос POST, вы не можете получить доступ к переменным через JavaScript. Не можете ли вы проверить URL-адрес строки запроса, а если есть, то это был запрос GET?

4

Нет, JavaScript не может обнаружить такую ​​вещь.

Что вы можете сделать инъекцию какой-то «флаг» в JS из кода позади:

void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "post_back_flag", "var _postBack = true;", true); 
    } 
} 

Затем проверьте, что флаг в коде JS.

Смежные вопросы