在ASPX页面中生成Javascript,并将其呈现给Sharepoint

时间:2015-11-09 15:18:58

标签: javascript asp.net dynamic

由于我后悔的原因,我发现自己处于这样一种情况:我试图通过插入的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的服务器但是在父页面所在的那个上完全无法控制是来自的服务器。

1 个答案:

答案 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

立即行动......