我目前正在尝试从父JavaScript传递Silverlight字符串值。 Firefox的值很好,但不适用于IE。
字符串
string fileName = "";
在MainPage.cs中的公共部分类Mainpage:UserControl中声明 在公共MainPage()我有以下尝试分配fileName它的值。
fileLocation = HtmlPage.Window.Invoke("getFileLocationFromParent").ToString();
在Silverlight .aspx页面中是函数
function getFileLocationFromParent() {
var alertMessage = "";
alertMessage = parent.getFileLocation();
alert(alertMessage);
return parent.getFileLocation();
}
父函数很简单并返回一个变量。
function getFileLocation() {
return fileID; }
fileID声明为var fileID =“”;在父级JS的documentReady部分。 在加载Silverlight之前,它是在按钮单击功能上声明的值。 按钮点击事件内部是:
getID();
在父JS中定义为:
function getID() {
$.ajax({
type: 'POST',
url: '/Page.aspx/getIDstuff ', //returns a string value
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (returnValue) {
fileID = returnValue.d;
}
});
}
我使用警报进行测试。使用chrome和firefox我看到了相应的字符串,但是在IE中我只看到一个空字符串。
有没有人有任何建议? 谢谢!
答案 0 :(得分:0)
我要做的第一件事就是使用Fiddler来确保对/Page.aspx/getIDStuff的请求正在发生并且正在返回您期望的内容。
虽然我不是JQuery专家,但它看起来像我对$ .ajax的调用将异步完成。无法保证在Main构造函数执行之前完成ajax调用。
在不同的Javascript实现之间,线程调度的工作方式可能存在很大差异。