2012-03-01 14 views
2

私はsymfony2の新機能です。ユーザーがdivをクリックすると、ajaxを使用してビューを読み込む際にいくつかの問題が発生します。 Firebugを使用すると、データが返されるのがわかりますが、結果をページに追加することはできません。ajax symfony2を使用したロードビュー

マイコード: //デフォルトのコントローラ

public function indexAction($num, Request $request) 
    { 
     $request = $this->getRequest(); 

     if($request->isXmlHttpRequest()){ 
      $content = $this->forward('PaginationBundle:Default:ajax'); 
      $res = new Response($content); 
      return $res; 
     } 

     return $this->render('PaginationBundle:Default:index.html.twig', array('num' => $num)); 
    } 

     public function ajaxAction() 
    { 
     return $this->render('PaginationBundle:Default:page.html.twig'); 
    } 
} 

私のJs: #targetをクリックすると、私は私のdivに

$("div#target").click(function(event){ 
    t = t +1; 
    $.ajax({ 
     type: "POST", 
     cache: "false", 
     dataType: "html", 
     success: function(){ 
     $("div#box").append(data);  
     } 
    }); 
    }); 

をpage.html.twigロードしたいのですが私はそれがajaxActionをロードするajaxリクエストかどうかを検出するために、私のコントローラでisXmlHttpRequest()を使用しています。私は火かき棒でそのビューを取得しますが、それは私のdiv#ボックスに追加されていません。 div#ボックスはindex.html.twigに存在する

事前のおかげ

+0

あなたはなぜやっている$要求= $要求 - >のGetRequest()?$要求がすでに設定されている...助け。 – Cerad

+0

ありがとう、私はまだ少し混乱している私は詳細にもっと注意を払って文書を読む必要があります – rpa

答えて

2

で誰も私はAJAX呼び出しを治療するために、あなたの前進を得ることはありません。これを試してみてください:すでにResponseオブジェクトを返します()

if($request->isXmlHttpRequest()){ 
    return $this->forward('PaginationBundle:Default:ajax'); 
} 

コントローラ::前方を;)

+0

この方法ははるかに優れており、私はあまり明確ではないコードを得ることができます。どうもありがとう !私はこのようにしてみました:$ this-> render( 'PaginationBundle:Default:page.html.twig');うまくいった。 – rpa

4

これはsymfonyでなく、あなたのAJAXのオプションとは何の関係もありません。 Peceは正しいですが:Responseオブジェクトのように、forwardからのリターンを直接使うことができます。

問題はあなたのajaxオプションの中にあります。内部関数内でデータオブジェクトを渡す必要があります。データは単にnullです。これを試してください:あなたの $で

success: function(data){ 
    $("div#box").append(data);  
} 
+0

あなたは正しいです!ありがとう、それは私の気晴らしでした。 – rpa

6

(「のdiv#目標を」()関数(イベント)イベントをクリックして、AJAX呼び出しでurlパラメータを指定しなかった、と別のものは、あなたが引数を指定する必要があります。 AJAX呼び出しの '成功' パラメータの内部。

$("div#target").click(function(event){ 
    t = t +1; 
    $.ajax({ 

     type: "POST", 
     url: "{{path('yourpath-means header name in routing.yml')}}", 
     cache: "false", 
     dataType: "html", 
     success: function(result){ 
     $("div#box").append(result);  
     } 
    }); 
    }); 

希望これは ハッピーコーディング

+0

あなたは正しいです!ありがとう、それは私の気晴らしでした。 – rpa

関連する問題