gpt4 book ai didi

javascript - 如何在 Silex 中使用 JQuery Ajax

转载 作者:行者123 更新时间:2023-11-30 11:55:59 25 4
gpt4 key购买 nike

我试图理解 Silex 和 JQuery 是如何协同工作的。但我不明白,我希望你能帮助我。

我有一个包含 AJAX 调用的 twig-Template 女巫。我不明白如何将 Ajax 调用绑定(bind)到我的应用程序。

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 和类?谢谢你的帮助米迦

最佳答案

通常您会使用 .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;
});

关于javascript - 如何在 Silex 中使用 JQuery Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com