使用C#代替表单URL将数据发布到PHP页面
我有一个C#cart应用程序,它需要将一些数据发布到PHP页面,并将用户重定向到该页面以查看数据。一切正常!那么,问题是什么 由于我们使用Javascript函数通过将表单的操作设置为PHP URL将表单发布到PHP页面,因此它不允许我们用购物车内容清除会话变量 一旦用户单击checkout并发送到第三方站点,我们希望存储其购物车内容的会话变量消失。据我所知,我无法通过Javascript来清除这一点,因此我的想法是通过C#代码将POST数据和用户发送到PHP页面 当用户单击checkout时,Javascript重新加载页面,将购物车数据设置为字符串变量,清除会话,然后发布数据并将用户发送到PHP页面 除了发布数据和重定向用户之外,所有这些都在工作。不幸的是,出于安全原因,第三方页面无法接受URL.PHP?=var类型参数,因此我们必须发布它使用C#代替表单URL将数据发布到PHP页面,c#,post,webrequest,C#,Post,Webrequest,我有一个C#cart应用程序,它需要将一些数据发布到PHP页面,并将用户重定向到该页面以查看数据。一切正常!那么,问题是什么 由于我们使用Javascript函数通过将表单的操作设置为PHP URL将表单发布到PHP页面,因此它不允许我们用购物车内容清除会话变量 一旦用户单击checkout并发送到第三方站点,我们希望存储其购物车内容的会话变量消失。据我所知,我无法通过Javascript来清除这一点,因此我的想法是通过C#代码将POST数据和用户发送到PHP页面 当用户单击checkout时,
使用WebRequest,我相信我可以获得发布的数据,但我无法让用户重定向到该页面以完成他们的订单。有什么想法吗?您可以继续使用Javascript解决方案,只需添加一个Ajax调用即可放弃会话我建议您实现一个中间页面来准备数据并清理会话。“checkout”链接只需将用户导航到此中间页面,即可执行以下操作:
我只是在这里猜测,但您应该能够在WebBrowser控件项中传输数据,这样它将发送post数据并重定向。我从未使用过Ajax-您对此有参考资料或解释此想法的方法吗?谢谢你的回复!您并不真正需要AJAX(异步JavaScript和XML),您只需要一个或异步JavaScript调用。我想你可以从搜索“asp.net webmethod”或“asp.net ajax”开始。我会做更多的调查——我曾试图在Javascript函数中找到一种清除会话的方法,但没有成功。我将搜索异步调用,看看我从何而来。如果您试图用javascript函数解决这个问题,您可能会对客户端和服务器端有点混淆。会话保存在服务器上,而javascript保存在客户端。是的,我意识到了这一点。这就是困境。我们创建这个应用程序时没有想到用户会想要返回到原始页面,而大多数人不会这样做。他们将结帐、付款、关闭浏览器,否则会话将超时。然后我们意识到,可能有人下了一个订单,然后决定下另一个订单——然后我们需要在结帐时清除会话变量,但我们必须在不重新设计所有内容的情况下完成。因此,如果我们能够通过从客户端Javascript调用服务器端函数来解决这个问题,那将是一场胜利。嘿,Kenley!事实上,我刚刚做了这项工作,并且知道WebRequest将完成将数据发布到php页面的技巧-但是,用户必须重定向到数据发布到的页面,因为数据用于完成他们的签出。WebRequest可以这样做吗?不仅要发布数据,还要将用户发送到同一页面查看数据?
using System;
using System.IO;
using System.Net;
using System.Text;
namespace Examples.System.Net
{
public class WebRequestPostExample
{
public static void Main ()
{
// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
string postData = "This is a test that posts this string to a Web server.";
byte[] byteArray = Encoding.UTF8.GetBytes (postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream ();
// Write the data to the request stream.
dataStream.Write (byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close ();
// Get the response.
WebResponse response = request.GetResponse ();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream ();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader (dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd ();
// Display the content.
Console.WriteLine (responseFromServer);
// Clean up the streams.
reader.Close ();
dataStream.Close ();
response.Close ();
}
}
}