2017-07-07 6 views

答えて

1

を受信データはZF3を使用してAJAXリクエストの単純な例です。これで試してみてください。この例では、ZF3のデフォルトのApplicationモジュールを使用します。

次のURLからajax呼び出しでデータを取得すると仮定します。

http://yoursite.com/title 

IndexControllertitleルートのアクションメソッドを作成することができます。

public function titleAction() 
{ 
    // Initialize view 
    $view = new ViewModel(); 

    // Checks if this is a Javascript request 
    $xmlHttpRequst = $this->getRequest()->isXmlHttpRequest(); 

    if (! $xmlHttpRequst) { 
     die('Bad request'); 
    } 

    /** 
    * Here we may pull data from database but for tests 
    * here we make an array of titles for the view 
    */ 
    $titles = []; 
    for ($i = 0; $i < 10; $i++) { 
     $titles[] = "Lorem ipsum dolor {$i}"; 
    } 

    // Set data to be used in the view 
    $view->setVariable('titles', $titles); 

    /** 
    * Tell the renderer not to show the layout 
    * by setting setTerminal to true 
    */ 
    $view->setTerminal(true); 

    return $view;   
} 

私たちはメソッドを作成しました。そのためにビューテンプレートを作成する必要があります。

ビュー/アプリケーション/インデックス/ title.phtml

<?php 
foreach ($titles as $title) { 
    echo '<h2>' . $title . '</h2>'; 
} 

今、我々はAJAX呼び出しになるだろうどこからIndexControllerに別のアクションメソッドを作成します。

http://yoursite.com/text 

だから

public function textAction() 
{ 
    return new ViewModel(); 
} 

とビューテンプレートはそう

ビュー/アプリケーション/インデックス/ text.phtml

<h1>Handling ajax request</h1> 

<button onclick="showTitle()">Show Title</button> 

<div id="box"></div> 

<?php 
    // Set url 
    $url = $this->serverUrl('/title'); // http://yoursite.com/title 

    // This is for the "url" catch 
    echo "<script>" . PHP_EOL; 
    echo "\tvar url = '{$url}';" . PHP_EOL; 
    echo "</script>" . PHP_EOL; 
?> 

<script> 
    function showTitle() { 
     $.get(url, function(data){ 
      $('#box').html(data); 
     }) 
     .done(function(){ 
      console.log('Done!'); 
     }) 
     .fail(function(){ 
      console.log('Failed!'); 
     });  
    } 
</script> 
ようになる...あまりにもそのアクションメソッドを行うことができます

このスクリプトでは、ajaxを作成するためにjQuery Javascriptライブラリが必要ですコール。ですから、あなたのview/layout/layout.phtmlにスクリプトが追加されていることを確認してください。

最後に、/title/textのルートを設定する必要があります。それはあなたが幸せならば、私たちは知ってみましょうモジュール/アプリケーション/設定/ module.config.php

'title' => [ 
    'type' => Literal::class, 
    'options' => [ 
     'route' => '/title', 
     'defaults' => [ 
      'controller' => Controller\IndexController::class, 
      'action' => 'title', 
     ], 
    ], 
], 
'text' => [ 
    'type' => Literal::class, 
    'options' => [ 
     'route' => '/text', 
     'defaults' => [ 
      'controller' => Controller\IndexController::class, 
      'action' => 'text', 
     ], 
    ], 
], 

のルート区間にこれら二つのルートを追加できます!

+0

これはうまくいきましたが、Ajaxの例を表示したいAjaxとアクションの間でデータを送受信できません –

関連する問題