将JavaScript变量传输到Silverlight时出现问题

时间:2011-09-08 18:59:15

标签: javascript silverlight

我目前正在尝试从父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中我只看到一个空字符串。

有没有人有任何建议? 谢谢!

1 个答案:

答案 0 :(得分:0)

我要做的第一件事就是使用Fiddler来确保对/Page.aspx/getIDStuff的请求正在发生并且正在返回您期望的内容。

虽然我不是JQuery专家,但它看起来像我对$ .ajax的调用将异步完成。无法保证在Main构造函数执行之前完成ajax调用。

在不同的Javascript实现之间,线程调度的工作方式可能存在很大差异。