我想从Javascript中提供的数据库中制作文本。我已经制作了输出Javascript代码的Texts.aspx,我想要包含它。包含必须以正确的顺序完成,因为Texts.aspx使用其他Javascript文件中的函数。我尝试将ScriptReference添加到此aspx文件中,但这会破坏一些事情。以下代码在ScriptResource.axd上给出了404错误。
<asp:ScriptManager runat="server" EnableScriptGlobalization="true">
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/Scripts/textFunctions.js" />
<asp:ScriptReference Path="~/Scripts/Texts.aspx" />
<asp:ScriptReference Path="~/Scripts/useTexts.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManager>
如何包含动态生成的Javascript文件?
答案 0 :(得分:1)
请使用IHttpHandler而不是标准的aspx页面,因为它是您真正想要的。 如果你必须使用aspx文件,请确保你只返回那里的javascript内容,并且你也应该为javascripts设置内容类型。
例如:
public class Texts : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/javascript";
context.Response.Write("var texts = { Some: 'some text here' }");
}
public bool IsReusable
{
get
{
return false;
}
}
}
比在master或aspx中
<asp:ScriptManager runat="server" ID="sm">
<Scripts>
<asp:ScriptReference Path="/Scripts/jquery-1.4.1.js" />
<asp:ScriptReference Path="/texts.ashx" />
</Scripts>
</asp:ScriptManager>
最后你可以确认它有效(你也会在firebug中看到你的ashx文件被正确识别为javascript)
<script type="text/javascript" language="javascript">
alert(texts.Some);
</script>
答案 1 :(得分:0)
不,这是不可能的。 ScriptReference引用一组脚本然后从磁盘读取,因此无法对HTTP位置进行ScriptReference。