cfhttp Передача переменных POST по нажатой ссылке? - PullRequest
1 голос
/ 12 января 2012

Я смотрел на тег cfhttp, и его можно использовать для передачи переменных по нажатой ссылке?

<cfhttp method="Post" url="myurl"> 

Я пытаюсь передать переменные по щелчку ссылки (например, идентификаторы пользователя), но отправлять через GET кажется небезопасным ...

Ответы [ 2 ]

1 голос
/ 13 января 2012

Если вы не хотите отправлять переменные обратно в CF для выполнения POST, вы также можете сделать это с помощью некоторой магии JavaScript.Например:

<a class="postLink" href="foo.cfm?var1=a&var2=b">Click Me</a>

Теперь, скажем, вы хотите запросить foo.cfm как POST, передав переменные var1 и var2 в качестве переменных POST (предполагается, что jQuery):

<script>
$(function () {
   $(document).on('click', 'a.postLink', function (e) {
     e.preventDefault();
     var newForm = $("<form method='POST'></form>");

     if ($(this).attr('href').indexOf('?') != -1)
     {
       newForm.attr("method", $(this).attr('href').substring(0, $(this).attr('href').indexOf('?')));
       var post_args = $(this).attr('href').substring($(this).attr('href').indexOf('?')+1, $(this).attr('href').length).split('&');

       for (var i in post_args)
       {
         var keyVal = post_args[i].split('=');
           newForm.append($("<input>", { type: "hidden", name:keyVal[0], value:keyVal[1] }));
       }

     }
     else
     {
       newForm.attr("method", $(this).attr('href'));

     }
     console.log(newForm);
     newForm.submit();
   });
});
</script>

Это остановитобычная обработка всех ссылок, помеченных классом «postLink», и вместо перехода на эту страницу создаст новый объект формы с параметрами, проанализированными из URL ссылки, включенными в качестве параметров формы.Затем он отправит эту форму с использованием POST на тот же базовый раздел, на который указывает скрипт.Вот рабочая скрипка: http://jsfiddle.net/VGaPH/

1 голос
/ 13 января 2012

Мой первоначальный ответ полностью не прошел оценку, но я не могу удалить принятый ответ, поэтому для ясности я изменяю этот ответ, чтобы согласиться с комментарием Билли выше.

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

То, что вы запрашиваете, похоже, совершенно не связано с функциональностью, в которой:

  1. У вас есть HTML-якорь (гиперссылка) на вашей странице.
  2. Когда пользователь нажимает эту ссылку, вы хотите передать 1 или более переменных на новую страницу.

Самый простой способ сделать это - использовать скрытую форму, а гиперссылка затем отправить форму. Это соответствует предложению Билли в комментариях к вашему вопросу:

<form name="myForm" method="post" action="pageToSendVarsTo.cfm">
  <input type="hidden" name="username" value="theuser" />
  <input type="hidden" name="id" value="42" />
</form>

<a href="#" onClick="document.myForm.submit();">the link to click</a>

Здесь у вас есть HTML-форма с двумя скрытыми полями, именем пользователя и идентификатором, которые не отображаются на странице, поскольку они скрыты (но обратите внимание, их все равно можно просмотреть, если пользователь просматривает источник вашей страницы). Далее «ссылка для клика» визуально отображается как гиперссылка на пользователя. При нажатии JavaScript используется для имитации запуска отправки формы; По сути, он ведет себя так, как если бы в форме была кнопка отправки, а пользователь нажимал эту кнопку отправки. Для формы этого примера это означает, что значения имени пользователя и идентификатора затем отправляются по HTTP на страницу pageToSendVarsTo.cfm, где они доступны в области FORM для продолжения обработки.

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