У меня есть ASP.Net HTTPHandler, который получает POSTed с веб-страницы ColdFusion, FORM которой выглядит примерно так:
<form name="sendToHandler" action="http://johnxp/FileServiceDemo2005/UploadHandler.ashx" method="post">
<input type="hidden" name="b64fileName" value="fileservice.asmx.xml" />
<input type="hidden" name="strDocument" value="Document" />
<input type="submit" name="submitbtn" value="Submit" />
Каков наилучший способ для этого .Net Handler вернуть строку на страницу POSTing ColdFusion?
Обновление EDIT 14 августа 2009 года:
Решение, появившееся в моем файле .ashx, связано с сохранением URL файла .cfm, который POSTed моего обработчика и добавления строки запроса с результирующей строкой, которую я хочу передать обратно в ColdFusion. Мой CF-коллега использует наличие или отсутствие этих данных запроса для форматирования веб-страницы .cfm соответственно:
public void ProcessRequest(HttpContext context)
{
string returnURL = context.Request.ServerVariables["HTTP_REFERER"]; // posting CFM page
string message = UploadFile(context); // handles all the work of uploading a file
StringBuilder msgReturn = new StringBuilder(returnURL);
msgReturn.Append("?n=");
msgReturn.Append(HttpUtility.UrlEncode(TRIMrecNumAssigned));
msgReturn.Append("&m="); // this is just a msg with performance data about the upload operation (elapsed time, size of file, etc.)
msgReturn.Append(HttpUtility.UrlEncode(message));
context.Response.Redirect(msgReturn.ToString());
}
Просто напишите строку непосредственно в объекте ответа в методе ProcessRequest.
public void ProcessRequest(System.Web.HttpContext context)
{
context.Response.Write(mystring);
}
Вы можете создать JSON из вашего обработчика HTTP и использовать jquery.post
для отправки данных формы и получения результатов на странице ColdFusion.
Если вы хотите, чтобы ColdFusion знал, что возвращается, тогда есть два способа обойти это.
Первое - вернуть строку в форму (как предложено womp), а затем обработать ее из браузера либо путем отправки вторичной формы, либо каких-либо других средств. Поскольку это похоже на то, что все значения в форме предоставляются вместо поставляемого пользователем, это не то, что я бы сделал.
Второй способ заключается в том, чтобы CF обрабатывал сам пост формы. Предполагая, что значения, передаваемые вашей формой, доступны для CF, вы можете использовать CFHTTP для "подделки" сообщения формы. CF будет возвращен результат напрямую, и вы сможете обработать ответ оттуда.