由于我后悔的原因,我发现自己处于这样一种情况:我试图通过插入的JavaScript代码向另一个页面显示数据。
本质上,我所做的是从aspx页面内查询数据库,并将数据写入javascript数组。此aspx页面用作脚本标记中的src元素。
这仅适用于浏览器为IE时的重新发布。
代码可能有助于解释,[此页面按预期工作] http://server1/Website1/ <
<%@ Page ContentType="application/javascript" Language="C#" AutoEventWireup="true" CodeFile="GetDataFromDB.aspx.cs" Inherits="GetDataFromDB" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
</body>
</html>
在我们背后的代码中
public partial class GetDataFromDB: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "application/javascript";
StringBuilder output = new StringBuilder();
output.Append(" var data= [");
// Open database connection
// Get some data
// write it out into the output StringBuilder
// close down connection
output.Append("]; )";
byte[] data = GetByteArray(output.ToString());
Response.OutputStream.Write(data, 0, data.Length);
Response.OutputStream.Flush();
Response.End();
}
}
在Sharepoint页面中,我已包含此脚本标记
<script language='javascript' type='application/javascript' src='http://server1/Website1/GetDataFromDB.aspx' ><\script>
现在这在IE中工作正常并且数据被呈现给页面,但是在Firefox和Opera中这似乎工作正常但是在脚本文件的内容中每个字符都穿插着?,即它开始:
v?a?r? d?a?t?a?=?[? .... etc
如果我将生成的页面的内容复制到文本文件并将其保存在同一位置,例如http://server1/Website1/GetDataFromDB.js并将其用作源,则可以使用。
任何人都知道我做错了什么?
其他信息,这些页面是从不同的主机运行的,并且两者都是通过IIS切断的,我完全控制托管http://server1/Website1/GetDataFromDB.aspx的服务器但是在父页面所在的那个上完全无法控制是来自的服务器。
答案 0 :(得分:0)
这是我自己的错...... 我在这个SO帖子上基于函数GetByteArray(): How do I get a consistent byte representation of strings in C# without manually specifying an encoding?
然而,这是问题的原因,应该是: https://stackoverflow.com/a/10379957
立即行动......