Javascript 如何使用HTML图像请求将数据发送到服务器,或返回数据作为响应
我正在用javascript创建一个像素图像,方法是创建图像标记并将其注入DOM 标记看起来像这样:Javascript 如何使用HTML图像请求将数据发送到服务器,或返回数据作为响应,javascript,asp.net,browser-cache,Javascript,Asp.net,Browser Cache,我正在用javascript创建一个像素图像,方法是创建图像标记并将其注入DOM 标记看起来像这样: byte[] _imgbytes = Convert.FromBase64String("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); Response.ContentType = "image/gif"; Response.AppendHeader("Content-Length", _imgbytes.Leng
byte[] _imgbytes = Convert.FromBase64String("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
Response.ContentType = "image/gif";
Response.AppendHeader("Content-Length", _imgbytes.Length.ToString());
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.BinaryWrite(_imgbytes);
如您所见,此标记实际上将调用ASP.Net页面,该页面将进行一些处理并写回如下像素:
byte[] _imgbytes = Convert.FromBase64String("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
Response.ContentType = "image/gif";
Response.AppendHeader("Content-Length", _imgbytes.Length.ToString());
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.BinaryWrite(_imgbytes);
我需要的是一种方法,可以将一小段数据(像素请求之前javascript中生成的GUID值)传递给服务器,也可以将一些数据(像素aspx代码中生成的不同GUID)以javascript可以获取的方式传递回浏览器
注意事项:
使用
http://xyz.com/pixel.aspx/your-guid-here
。然后,只需配置您的Web服务器和/或应用程序,这样就不会导致404错误,而是执行您的aspx代码。我自己解决了这个问题
我没有使用图像,而是使用远程脚本请求。因此,我的注入标签如下所示:
byte[] _imgbytes = Convert.FromBase64String("R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
Response.ContentType = "image/gif";
Response.AppendHeader("Content-Length", _imgbytes.Length.ToString());
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.BinaryWrite(_imgbytes);
然后,在我的aspx中,我有以下内容:
string script = "(function(){Complete('" + guidValue + "');})();";
Response.ContentType = "application/javascript";
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Write(script);
当响应返回到浏览器时,Complete
方法(驻留在页面已加载的javascript文件中)使用my guid参数执行。这使我的页面能够完全访问guid
此外,由于请求URL从未更改,因此浏览器会正确缓存脚本
瞧。页面上有多少图像?它们是否都有不同的GUID?每页只有一个图像。就缓存而言,这是否与使用查询字符串相同?不,在这种情况下,客户端看不到查询字符串,因此它被缓存。当然,如果GUID发生更改,则不会从缓存加载映像,但无论如何,这可能是您想要的方式。如果你不想这样,你可能是运气不好。不幸的是,这个想法与使用querystring没有任何不同。我希望在后续请求中,即使GUID发生更改,也能从缓存中提取像素图像。这是不可能的。不同的URL(或查询字符串)=>新请求。