在 ASPX 页面中生成 Javascript,并将其呈现给 Sharepoint
Generating Javascript in an ASPX page, and presenting it to Sharepoint
出于让我感到遗憾的原因,我发现自己正试图通过插入的 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 的服务器,但完全无法控制一个是父页面的服务器来源。
是我自己的错...
我将函数 GetByteArray() 基于此 SO post:
How do I get a consistent byte representation of strings in C# without manually specifying an encoding?
然而这是问题的原因,它应该是:
现在工作...
出于让我感到遗憾的原因,我发现自己正试图通过插入的 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 的服务器,但完全无法控制一个是父页面的服务器来源。
是我自己的错... 我将函数 GetByteArray() 基于此 SO post: How do I get a consistent byte representation of strings in C# without manually specifying an encoding?
然而这是问题的原因,它应该是:
现在工作...