2011-09-08 47 views
1

我正在嘗試從父JavaScript中傳遞Silverlight的字符串值。 Firefox的值很好,但IE瀏覽器沒有。將JavaScript變量傳遞給Silverlight時的問題

字符串

string fileName = ""; 

公共部分類網主頁聲明:在MainPage.cs 在公衆的MainPage()我有嘗試它的值賦給文件名以下用戶控件。

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; 
    } 
}); 
} 

我用警報進行測試。使用鉻和Firefox我看到適當的字符串,但在IE中,我只看到一個空白字符串。

有沒有人有任何建議? 謝謝!

回答

0

我會做的第一件事就是使用Fiddler來確保/Page.aspx/getIDStuff的請求正在發生,並且正在返回您所期望的。

同樣,雖然我不是JQuery專家,但它確實在我看來,對$ .ajax的調用將異步完成。不能保證ajax調用將在Main構造函數執行之前完成。

在不同的Javascript實現之間線程調度的工作方式可能有很大的差異。