Использование cfhttp для публикации данных - PullRequest
0 голосов
/ 08 сентября 2010

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

Мое предыдущее утверждение выглядело так:

<cf_location url="mypage.cfm?id=123">

И я заменил его на:

<cfhttp method="post" url="mypage.cfm">
    <cfhttpparam name="theID" type="URL" value="123">
</cfhttp>

Но cfhttp ничего не публикует. В Firebug на вкладке NET ничего не отображается, и ничего не происходит, если предполагается, что этот код выполняется.

Я делаю это неправильно? Я использую правильный тип в cfhttpparam? Я очень новичок в ColdFusion, поэтому мне сложно.

Ответы [ 4 ]

7 голосов
/ 08 сентября 2010

Если вы хотите, чтобы сервер, а не клиент, видел результат, вы можете использовать CFHTTP.Как отметил Эдвард, клиент никогда не увидит взаимодействие, так как оно происходит только между сервером и (в вашем примере) самим собой (хотя вам необходим полный URL-адрес, включая имя хоста или IP-адрес).

InВ вашем примере есть несколько неправильных вещей:

  • вам нужен полный URL-адрес
  • вы используете переменные URL, а не переменные FORM (formField)

Это с небольшой настройкой (в частности, URL) должно работать:

<cfhttp method="post" url="http://localhost/mypage.cfm">
    <cfhttpparam name="theID" type="formField" value="123">
</cfhttp>

Помните, что ответ возвращается на сервер, поэтому конечный пользователь никогда не увидит mypage.cfm.Ответ будет возвращен на сервер в переменной CFHTTP (вы можете изменить это, используя атрибут «result»).

Если у вас нет контроля над mypage.cfm, возможно, его будет проще отредактироватьвзять переменные URL или использовать structAppend () для копирования переменных URL в область видимости FORM.

1 голос
/ 09 сентября 2010

Если вы просто передаете данные с одной страницы на другую, ваши параметры находятся в URL, в поле формы (возможно, в скрытом поле), в файле cookie или через переменную сеанса.

Один из способов сделать это (в зависимости от того, что вы пытаетесь сделать) - это (с переменными сеанса, установленными в вашем приложении)

в page1.cfm

<cfset session.theid="123">
<cf_location url="page2.cfm">

затем на page2.cfm

<cfoutput>theid=#session.theid#</cfoutput>

но рассмотрим многопользовательскую ситуацию с точки зрения перезаписи с одновременным доступом.

0 голосов
/ 08 сентября 2010

Использование cfhttp просто для другого места вне вашего приложения. Что касается вашего сообщения, вы используете cfhttp для отправки значения в том же приложении.

0 голосов
/ 08 сентября 2010

Тег CFLOCATION вызывает перенаправление в браузер, сообщая ему перейти на другой URL-адрес.

CFHTTP сообщает CF-серверу установить http-соединение с другим сервером.

Онини в коем случае не сравнимые операции.

Если вы пытаетесь отправить данные из браузера на CF-сервер, то вам нужно использовать тег HTML FORM.

Публиковать комментарии:

Что делает CFHTTP, так это устанавливает http-соединение с сервера на другой сервер.Итак, что вы будете делать - это установить HTTP-соединение с вашего собственного сервера на ваш собственный сервер, что, если вы не разрабатываете хардкорную SOA-систему, может быть немного странным.

Обычно, так как выВы уже находитесь на сервере, и вам следует кодировать функциональность, необходимую на обеих страницах, в повторно используемый компонент (CFC или даже просто пользовательскую функцию), а затем вызывать ее на обеих страницах.

Но, если вы действительно делаете то, что делаете, то, что вы спрашиваете здесь, правильно.

Одна вещь, которую вам нужно изменить, это то, что URL должен бытьполностью квалифицирован (т.е. myserver.mydomain.com/myapp/mypage.cfm).Вы не можете использовать «относительные» URL.

Вы не увидите ничего в firebug, потому что он идет от СЕРВЕРА к СЕРВЕРУ, а браузер вообще не задействован.

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