2011-09-08 11 views
1

現在、Silverlightに親JavaScriptの文字列値を渡そうとしています。 この値はFirefoxでは問題ありませんが、IEでは問題ありません。私はそれが価値のファイル名を割り当てようとし、次のを持っている)(公共のメインページでMainPage.cs でユーザーコントロール:JavaScript変数をSilverlightに転送する際の問題

文字列

string fileName = ""; 

は、公共の部分クラスメインページに宣言されています。 Silverlightの.aspxのページ内の

fileLocation = HtmlPage.Window.Invoke("getFileLocationFromParent").ToString(); 

は機能

function getFileLocationFromParent() { 
     var alertMessage = ""; 
     alertMessage = parent.getFileLocation(); 
     alert(alertMessage); 
     return parent.getFileLocation(); 
    } 

親関数が簡単で、変数を返しています。

function getFileLocation() { 
return fileID; } 

fileIDは、var fileID = ""と宣言されています。親のJSのdocumentReadyセクションにあります。 Silverlightがロードされる前にボタンクリック機能で値が宣言されています。ボタンのクリックイベント内 は次のとおりです。私はテストのために、アラートを使用

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

:として親JSに定義されている

getID(); 

。 chromeとfirefoxを使うと、適切な文字列が表示されますが、IEでは空の文字列しか表示されません。

誰にも提案はありますか? ありがとう!

答えて

0

私が最初にすることは、/Page.aspx/getIDStuffへのリクエストが確実に行われるように、Fiddlerを使用して、期待していたことを返すことです。

また、私はJQueryのエキスパートではありませんが、$ .ajaxの呼び出しが非同期で完了するように見えます。 Mainコンストラクターが実行される前にajax呼び出しが完了するという保証はありません。

さまざまなJavascript実装間でスレッドスケジューリングがどのように機能するかは、かなり異なる可能性があります。

関連する問題