2011-07-04 9 views
-2

まあ、ここで私は今直面している問題を整理するために一日中立ち往生してしまった。親切に私が...事前にページを実行するには、ajaxレスポンスページ内にjavascript関数が含まれていますか?

感謝をAjaxの応答ページ内のJavaScript関数を実行するための解決策を見つけるためのお手伝い

*photo.php - (Main php file)* 
…. 
…. (header goes here…) 
…. 
*<script src="scripts/photogallery.js" type="text/javascript"></script>* 
…. 
…. (ajax refresh script goes here…) 
…. 
**http1.open("GET", "photo_x.php?id1=" + escape(sIdtn1), true);** 
…. 
…. (body/coding goes here…) 
…. 
…. **<script type="text/javascript"> initGalleryScript(); </script> // this script is inside the ajax refresh tag** 
…. 

*Photo_x.php - (ajax refresh file)* 
…. 
…. (coding goes here…) 
…. 
…. **<script type="text/javascript"> initGalleryScript(); </script> // I need to execute this script which is not working currently.** 

...私に説明してみましょう。

+1

通常、ajaxレスポンスハンドラでは、 'success'ハンドラを指定できます。それは、あなたが必要とする他の機能を呼び出す場所です。使用しているAjaxライブラリ(存在する場合)を指定しないので、取得するのが最適です。 –

答えて

0

あなたが本当にやりたいことはあまり明確ではありませんが、あなたの質問の件名だけで判断すると、サーバーからのAjaxリクエストをして、現在のページのコンテキストで実行します。

サーバーから戻ってくる必要があるのはデータですが、JSONまたはJSONPを使用することができます。これはサーバーからデータをjavascript形式で返す方法で、データはJavaScriptデータ構造として表現されますブラウザーのjavacscriptエンジンによって実行され、解析されます。

場合によっては、ajaxリクエスト自体に、JSONPレスポンスで呼び出すメインJavaScriptのコールバック関数の名前が含まれています。ここでは、このコールバックがどのように機能するかを説明します:http://s5.parature.com/UserGuide/Content/API/ParatureApiJSON.html#JSON_Callback_support

サーバーから返されるものに対して独自のレスポンスハンドラを作成すると、返されたコードでevalを呼び出すことができ、コードを含むレスポンスに任意の種類のjavascriptを置くことができます。それをするときには注意が必要なセキュリティ上のことがいくつかありますが、この方法でも動作します。

コードがあらかじめわかっている(通常はそうである)場合は、実際にサーバーからコードを返す必要はないでしょう。元のページにコードを挿入するか、スクリプトタグを挿入してコードを動的に読み込むだけで、Ajaxレスポンスは単なるデータにすることができます。

+2

JSONに関数を入れることはできません。 – Pointy

+0

私は主にJSONPについて考えていましたが(私はもともとJSONを書いていましたが)いずれにせよ、私は自分の答えを修正しました。 – jfriend00

+0

JSONの文字列に関数を書き込んだり、 'eval()'して関数を書くことができます。それはかなり醜いでしょう。 –