通过AJAX将PHP变量传递给JavaScript(聊天应用程序)
嗨 我正在尝试创建一个聊天应用程序为我的网站,其中有用户(注册,登录等)。我使用NodeJS作为聊天服务器,因此可以使用SocketIO 我有一个index.php,其中我设置了一个带有文本字段和提交按钮的表单。 要检索用户名,我在顶部有一段方便的代码:通过AJAX将PHP变量传递给JavaScript(聊天应用程序),javascript,php,jquery,ajax,node.js,Javascript,Php,Jquery,Ajax,Node.js,嗨 我正在尝试创建一个聊天应用程序为我的网站,其中有用户(注册,登录等)。我使用NodeJS作为聊天服务器,因此可以使用SocketIO 我有一个index.php,其中我设置了一个带有文本字段和提交按钮的表单。 要检索用户名,我在顶部有一段方便的代码: $stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid"); $stmt->execute(array(":uid"=>$_SESSION
$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
因此,我可以通过$row['username']访问用户名代码>
我在insertMessage.php中也这样做了,因此将带有消息的用户名插入到数据库中效果很好。
但是我不知道如何在client.js中找到它,它有以下代码:
$( "#messageForm" ).submit( function() {
var nameVal = $( ); <-------- don't know what to put in here :S
var msg = $( "#messageInput" ).val();
socket.emit( 'message', { name: nameVal, message: msg } );
$.ajax({
url: "../ajax/insertMessage.php",
type: "POST",
data: { name: nameVal, message: msg },
success: function(data) {
}
});
return false;
});
socket.on( 'message', function( data ) {
var actualContent = $( "#messages" ).html();
var newMsgContent = 'Name: ' + data.name + ' Message:' + data.message;
var content = actualContent + newMsgContent;
$( "#messages" ).html( content );
});
$(“#messageForm”).submit(函数(){
var nameVal=$();我想您有类似于$\u会话['username']的东西
可选1:
放入隐藏的输入
您可以尝试以下方法:
将数据插入数据库时,只需发送文本消息。从会话中检索发送消息的用户
// Send only the message
// in insertMessage.php retrieve the user from session.
// in response send the username and the message back to the client as json
// after retrieving the response you can emit your socket event
$.ajax({
url: "../ajax/insertMessage.php",
type: "POST",
data: { message: msg },
success: function(data) {
data = $.parseJSON(data);
username = data.username;
message = data.message;
socket.emit( 'message', { name: username, message: message} );
}
});
虽然不是最理想的解决方案,但您绝对可以尝试一下。也没有人知道该放什么,因为您没有发布有关HTML表单外观的任何信息。我使用了教程中的代码,在该教程中,不仅有消息文本字段,还有用户名文本字段。但是,因为我已经我有一个用户系统,我想去掉用户名字段,但我真的不知道怎么做,谷歌搜索“将PHP变量转换为javascript”更让我困惑:你是唯一知道“用户名”在哪里的人值应该来自。它是一个表单字段吗?客户端框架中的某个内容?其他内容?我在问题中写道:“这样我就可以通过$row['username']访问用户名了。”对不起,我弄错了,我没有读对。你能像@Pointy所说的那样给我们你的HTML吗?如果你使用了教程中的代码,给我们一个链接。因为只有上帝、你和教程作者知道nameVal值(注:我已经删除了我的答案),问题的标题确实是“将PHP变量传递到ajax中”,但问题的内容似乎正好相反。谢谢你的回答!但是有没有办法将var nameVal设置为用户名,而不是调用警报?选项2不起作用,因为它是一个client.js文件,但是第一个设置隐藏输入的选项非常好!非常感谢!)
<script>
var nameVal= <?php echo $_SESSION['username'];?>; //do this rigth before you call js script that will process this var.
</script>
<script src="client.js"></script>
// Send only the message
// in insertMessage.php retrieve the user from session.
// in response send the username and the message back to the client as json
// after retrieving the response you can emit your socket event
$.ajax({
url: "../ajax/insertMessage.php",
type: "POST",
data: { message: msg },
success: function(data) {
data = $.parseJSON(data);
username = data.username;
message = data.message;
socket.emit( 'message', { name: username, message: message} );
}
});