• ベストアンサー

AJAXでクリック時にサーバーからfinctionを取得

普通Javascripではfunction等は HTMLが読み込まれた際に実行または読み込まれますが、 AJAXでクリック時にサーバーからデータを取得する際に、 function(){}も取得したしてもそのfinctionは有効なのでしょうか? AJAXでデータは取得できても、functionなどのメソッドを取得してそれを有効にすることは可能でしょうか? よろしくお願いします。

  • ENTRE
  • お礼率0% (16/2523)

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

evalを使えば、文字列として受け取ったプログラムを実行出来ます。 関数の定義も可能です。 サンプル <html> <head> <script type="text/javascript"> <!-- //これは単なる文字列です。 var strFuncDef = "function hoge(){alert('hoge');}"; //evalで実行します。関数が定義されます。 eval(strFuncDef); //上記で後から追加した関数を呼び出します。 hoge(); //--> </script> </head> <body></body> </html>

その他の回答 (1)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

別回答。new Function()を使う方法。 こういう方法もありますね。 サンプル <html> <head> <script type="text/javascript"> <!-- //これは単なる文字列です。 var strProgram = "alert(x+y);"; //文字列のプログラムを関数として定義します。 //引数を並べた後、最後にプログラムです。 var hoge = new Function("x","y",strProgram); //上記で定義した関数を呼び出します。 hoge(12,34); //--> </script> </head> <body></body> </html>

関連するQ&A

  • ajaxでtxtを取得する

    基本的なことかもしれませんが、質問します。 prototypeのライブラリを使ってajaxに挑戦しています。 ******************** var D = { method : "get", onSuccess : function(){...} }; new Ajax.Request("dara.txt", D); ******************** この方法だと、キャッシュ(?)を読み込んでしまうのか、 cgiでの変更点がすぐに反映されてこないので、このようにしました。 ******************** var D = { method : "get", parameters : "n=" + Math.random(), //←ここを追加 onSuccess : function(){...} }; new Ajax.Request("dara.txt", D); ******************** これで、毎回ちゃんとサーバーから読み込むようになりましたが、 このスクリプトを実行するたびにインターネット一時ファイルに保存されるので、 ものすごい数のテキストファイルが保存されてしまいます。 毎回サーバーから読み込んで、且つ、一時ファイルに残さない方法をご存知の方は、ご教示願います。

    • ベストアンサー
    • AJAX
  • ajaxのレスポンスが取得できない。

    環境【cakePHP2.X, PHP5.5】 cakephpでajaxを試みてますがうまくいきません。 あるサンプルを参考にして ボタンのクリックをトリガに ajaxMethod()を走らせて alertで"tanaka"を表示させたいのですが なぜかOeders/index.ctpのhtmlを 取得し、長々と表示されてしまいます。 意図した結果を取得できるよう アドバイスを戴けたら嬉しいです。 よろしくお願いします。 【OrdersController.php】 class OrdersController extends AppController { function index() { //初期表示処理 } /** * Ajax用関数 */ function ajaxTest() { $this->autoRender = FALSE; if($this->request->is('ajax')) { return $this->data['name']."さん、こんにちは"; //echoでもOK } } } 【add.ctp】 function ajaxMethod() { $.ajax({ url: "Orders/ajaxTest", type: "POST", data: { name : "tanaka" }, dataType: "text", success : function(response){ //通信成功時の処理 alert(response); }, error: function(){ //通信失敗時の処理 alert('通信失敗'); } }); }

  • Ajaxをつかってデータを取得

    いつもお世話になっております。 今回はAjaxを使ってデータを取得する方法をお聞きしたいです。 たとえばログリストのようなものがあるとして、サーバー側にそのデータがあります。 そのリストを開いたとき、サーバーからデータを得て、リストに追加します。 そこで「次へ」のようなボタンを押した際、非同期で次の分を取得する方法はありますか? またこれは「パース」という方法になるのでしょうか? ご教授願います。

    • ベストアンサー
    • CGI
  • JQueryでAjax通信をキャンセルした時につて

    JQueryでAjax通信時に、abort()でキャンセルを行うと通信はキャンセルになっているようですが、 サーバー側(Ajaxで呼ばれた処理)は、最後まで処理されてしまいます。 abort()を実行させた時に、サーバー側の処理まで中断させる方法はありますでしょうか? 実行と中止は以下のような感じで書いています。 Ajax実行 arrXhr = $.ajax({ dataType: "json", type: "POST", url: "xxxxxxx.php", async: true, cache: false, data: sendData, success: function ( data ) { }, error: function ( XMLHttpRequest, textStatus, errorThrown ) { } }); 中止 xhr.abort();

  • AJAXで取得されているデータのスクレイピング

    PerlでWEB上のデータを収集したりしていますが、 AJAXでデータを取得する部分は、ブラウザでonload後に 行われている為、サーバサイドで実行するPerlで取得する事が出来ません。 そもそもデータの取得は不可能でしょうか? それとも他に実現可能な手段はありますでしょうか? 宜しくお願いいたします。

  • ajax反映後のjqueryが動かない

    色々と簡略化してますが、以下のようなajaxを交えたコードを書いています。 <script type="text/javascript"> $(function() { /* 初期変数処理 */ ............ /* HTML内object操作 */ ............ /* ある箇所をclickでイベント */ $('#hoge').click(function(e) ←(1)画面アニメーション { test3(); } /* 数秒後に(1)を自動実行 setInterval(function(){ ...... } /* formを使って検索 */ $('#form').submit(function(event) { event.preventDefault(); ........(中略) $.ajax({ type:"POST", url: "hoge.php", data:{data: data}, timeout: xxxxx, beforesend: { ........ }, complete: { ........ } success: function(data){ ......... ← (2)HTML内object操作、jquery部分は避ける test2(); } }); return false; }); function test1(){ ........ }; function test2(){ ........ }; function test3(){ ........ }; }); </script> [HTML] <form id = "form"> <input name="list"/> <button>送信!</button> </form> <div id="hogehoge"> ................. ←(3)検索で内容変更する箇所 </div> としているのですが、一度送信ボタンを押して(2)の処理を行った後、 (1)のアニメーションも含め、すべてのjquery要素が使用できなくなってしまいました。 http://semooh.jp/jquery/api/events/live/type,+fn/ によればliveを使えばclick処理はできるとありましたが、これでも動きません。 setIntervalの効果や、submitイベントすら動きませんでした。 なお、検索前は問題なく動作します。通常時は問題ないのですが、submit後からおかしいので、 ajaxに関してなにか見逃している箇所があるとは思うのですが、 どこが悪いのかはっきりと検討がついていません。 どなたかお知恵をお貸しいただけませんでしょうか。宜しくお願いします。

  • AJAXの書き方について

    <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); } ); </script> この部分は何を意味しているのでしょうか? $( '#ajax-button' ) .click( またここの部分をIDにして二つ別々のIDを書いてblur(fn()にしたい場合はどうすればいいのでしょうか? $("[id$=NO]").blur(function(){ $("[id$=NM]").blur(function(){ function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); }); }); このようにしても動きません。 正しい書き方を教えていただきたいです。

  • ajaxにより取得したxmlデータの加工について

    ajax通信でRSSのxmlデータを取得し、一部のタグを抽出してhtml上にリンク一覧を作りたく、以下のような処理をテストで作りました。 $(function() { $.ajax({ url: '取得対象のxmlファイルパス', type: 'GET', success: function(data) { //var json = $.xml2json(data); $(data)find('title').each(function(){ console.log($(this).text()); }); } }); }); コンソールにはすべて空データしか確認できないのですが、取得したdataを変換等する必要がありますでしょうか。

  • ajax 通信成功時

    ajaxで通信成功時のみに、通信終了後に関数を実行したいです。 通信が成功・失敗どちらでも、終了後に実行はcompleteでできますが、 成功時のみは、どのように書けばよいでしょうか? よろしくお願いします。 $.ajax({ type: 'GET', success: function () { 略 }, error:function(){ } }

  • AJAXでサーバーにある連想配列を取り出す

    こんにちは。PHP学習者です。 ブラウザ上でAJAXを使って、サーバーにあるPHPで作ったデータファイルを取得する方法は知っていますが、連想配列を取得することは出来ますか? 今までは連想配列をわざわざテキストファイルに書き換えてからAJAXで取得していましたが、もし直接取得する方法があれば知りたいと思いました。 詳しい方、どうかよろしくご教授ください。お願いします。

専門家に質問してみよう