2016-06-22 5 views
1

シレックスとJQueryがどのように連携しているかを理解しようとしています。しかし、私はそれを理解していません。JQuery AjaxをSilexで使用する方法

私は、AJAX呼び出しを含むtwig-Templateの魔法使いを持っています。 私はアプリケーションにAjax呼び出しをバインドする方法を理解していません。

JS:

$(document).ready(function() { 
/* 
setInterval(function() { 
    $.ajax({ 
     url: '/Chat/services/AjaxCom.php', 
     type: 'GET', 
     method: 'GET', 
     data: {message: message}, 
     success: function() { 
      console.log(data); 
     }, 
     error: function() {php 
      console.log('error'); 
     } 
    }); 
    return false; 
}, 100); 
*/ 
$('form').submit(
    function (event) { 

     event.preventDefault(); 
     var daten = $('#message').val(); 
     $.ajax({ 
      url: '/Chat/web/index.php', 
      type: 'GET', 
      data: {message: daten}, 
      success: function (daten) { 
       alert(daten); 
       $('#message').val(' '); 
       //console.log(daten); 
      }, 
      error: function() { 
       console.log('error at writing'); 
      } 

     }); 


    }); 

}); 

私はこのクラスを呼び出すためにワンド:

<?php 
namespace resources\services; 
resources\controller\UserOnline; 
use resources\objects\Message; 
use Silex\Application; 

/** 
* Class AjaxCom 
* @package resources\controller 
*/ 
class AjaxCom 
{ 

/** 
* @var array 
*/ 
private $chatOutput = []; 
/** 
* @var array 
*/ 
private $userOutput = []; 
/** 
* @var 
*/ 
private $ddConnect; 


/** 
* @return array 
*/ 
public function getChatOutput() 
{ 
    return $this->chatOutput; 
} 

/** 
* @return array 
*/ 
public function getUserOutput() 
{ 
    return $this->userOutput; 
} 


/** 
* AjaxCom constructor. 
* @param $datenbankVerbindung 
*/ 
public function __construct($datenbankVerbindung) 
{ 
    $this->ddConnect = $datenbankVerbindung; 
} 


/** 
* @return array 
*/ 
public function showChatData() 
{ 
    $posts = $this->ddConnect->fetchAll("SELECT * FROM messages"); 


    foreach ($posts as $post) { 

     /* 
     * post wird an die function buildMessageFromRow übergeben 
     array chatOutput bekommt Die Id aus DB=>Message 
     chatOutput[id objekt message] = objekt message d.h soviel id wie es gibt so viele Objekte gibt es. Jede zeile ist ein Objekt 
     */ 
     $message = $this->buildMessagerFromRow($post); 
     $this->chatOutput[$message->getId()] = $message; 
    } 

    return $this->getChatOutput(); 
} 

/** 
* @return array 
*/ 
public function showOnUser() 
{ 
    $users = $this->ddConnect->fetchAll("SELECT * FROM user WHERE status='1'"); 
    foreach ($users as $userOnline) { 
     $userOnline = $this->buildUserFromRow($userOnline); 
     $this->userOutput[$userOnline->getId()] = $userOnline; 

    } 

    return $this->getUserOutput(); 

} 

/** 
* @param $message 
* @param $writer 
*/ 


public function writeChatDateInDb($message,$writer) 
{ 
    $this->ddConnect->insert(
     'messages', 
     array(
      'message' => $message, 
      'writer' => $writer, 
     ) 
    ); 


} 

private function buildMessagerFromRow($rowSet) 
{ 
    return new Message(
     $rowSet['id'], 
     $rowSet['message'], 
     $rowSet['writer'] 
    ); 
} 
private function buildUserFromRow($rowset){ 
    return new UserOnline(
     $rowset['id'], 
     $rowset['name'], 
     $rowset['password'], 
     $rowset['status'] 
    ); 

} 
} 

誰かが私はJSとクラスを接続することができますどのように、私を説明できますか? あなたの助けを借りて Micha

答えて

3

通常、すべてのものを.htaccesを使用してindex.phpにルーティングします。

<IfModule mod_rewrite.c> 
    Options -MultiViews 

    RewriteEngine On 
    #RewriteBase /path/to/app 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

すべてのリクエストはindex.phpにルーティングする必要があります。次に、単にindex.phpに経路を追加するか、経路指定ファイルを組み込みます。

JS

$('form').submit(
    function (event) { 
     event.preventDefault(); 
     var daten = $('#message').val(); 
     $.ajax({ 
      url: '/chat', 
      type: 'POST', 
      data: {message: daten}, 
      success: function (daten) { 
       alert(daten); 
       $('#message').val(' '); 
      }, 
      error: function() { 
       console.log('error at writing'); 
      } 
     }); 
    }); 
}); 

PHP

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 

$app->post('/chat', function (Request $request) { 
    $ajaxCom = new AjaxCom(); 
    $data = $request->get('message'); 
    $response = $ajaxCom->yourFunction($data); 
    return $response; 
}); 
+0

あなたの助けのためにそんなにThxを....今私はそれを理解.... :) – freemindghost

+0

私は助けることができ嬉しいです。答えを受け入れることを検討してください。 –

関連する問題