【问题标题】:Problem transferring JavaScript variable to Silverlight将 JavaScript 变量传输到 Silverlight 时出现问题
【发布时间】:2011-09-08 18:59:15
【问题描述】:

我目前正在尝试从父 JavaScript 向 Silverlight 传递一个字符串值。 该值适用于 Firefox,但不适用于 IE。

字符串

string fileName = "";

在公共部分类Mainpage中声明:MainPage.cs中的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 中我只看到一个空白字符串。

有人有什么建议吗? 谢谢!

【问题讨论】:

    标签: javascript silverlight


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2012-07-03
      相关资源
      最近更新 更多