我有一个用户控件,用于分配在另一个脚本文件中定义的JavaScript变量。此用户控件由ASP.NET通用处理程序编译为HTML,然后由标记容器中的JQuery Ajax粘贴其标记。问题是分配脚本没有粘贴编译的用户控件HTML。这是我的JavaScript代码,它位于JavaScript文件中:
var xyz;
function initEnvironment(){
$.ajax({
url: handlerURL,
type: "POST",
data: JSON.stringify(
{
XSRFToken: xsrf_token,
Data: ajaxData
})
,
dataType: "json",
cache: true,
async: IsAjaxAsync,
beforeSend: null,
success: function (data) {
$('#containerDiv').html(data); //this must contain assignment statement for xyz
alert(xyz); //xyz is null here
}
});
}
这是用户控制C#代码,应该分配变量:
Literal1.Text = litHtml + @"<script type='text/javascript'>
xyz = " + xyz + ";</script>";
litHtml
包含一些成功粘贴在容器中的HTML代码,但连接的脚本代码没有粘贴。可能是什么原因?
更新
JavaScript端的 xyz
是一个JSON对象。
答案 0 :(得分:0)
不是使用脚本标记的文字设置xyz,而是尝试使用RegisterStartup脚本来执行将设置它的函数。您可能必须对json对象进行解码和编码。
服务器端
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "SetXYZ", "SetXYZ(" + xyz + ")");
客户端
function SetXYZ(xyzVal)
{
xyz = xyzVal;
}
您也可以简单地执行此操作
cs.RegisterStartupScript(this.GetType(), "SetXYZ", @"<script type='text/javascript'>
xyz = " + xyz + ";</script>");