PHP 必须使用 JS/JQ 触发表单数据(?)
PHP Formdata have to be triggered with JS/JQ (?)
是否可以不进入页面就运行一个phpfile/function?
我的意思是,如果您创建一个聊天应用程序,并且当您提交消息时整个页面都会重新加载,这真的很令人不安。
我试过 AJAX 但没有成功。 post chat_area
的文本到 PHP 文件是不可能的吗?
<form action="..." method="POST">
<textarea id="chat_area" name="chat_text" cols="50" rows="1"></textarea>
<input id="chat_submit" type="submit" name="submit" value="Posten">
</form>
<?php
session_start();
include_once( "database.php" );
if( $_POST["chat_area"] ){
$name = $_SESSION["firstname"]
$time = "[" . date( "H:i", time() + 3600 ) . "]";
$message = $_POST["chat_area"]
mysql_query( "INSERT INTO chat( name, time, message ) VALUES ('$name', '$time', '$message' )" );
}
?>
这是表单的默认行为。对于类似聊天的应用程序,您应该使用 ajax。不仅用于 posting 表单数据,还用于接收来自后端应用程序的消息。否则,您将不得不重新加载页面以检查您是否收到了一些新消息。
使用 jQuery 可以使用 event.preventDefault() 停止要触发的表单的默认操作,然后 post 数据到 PHP.
您应该将您的应用拆分为 2 个文件。主页和文件,所有数据都发送到(并从中接收)。
你的前端:
<?php
session_start();
// rest of the PHP, if any...
?>
<form method="POST">
<textarea id="chat_area" name="chat_text" cols="50" rows="1"></textarea>
<input id="chat_submit" type="submit" name="submit" value="Posten">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$('#chat_submit').on('click', function(e){
e.preventDefault();
$.ajax({
type : "POST",
url : 'your_php_file.php',
dataType : 'text',
data :{
message : $('#chat_area').val()
},
success : function(data){
if(data == 'success'){
// E.g.: append the message to chat area after it is successfully stored in DB.
}
},
complete : function(status){
// call on complete
},
error : function(response){
// call when error
}
});
});
});
</script>
PHP (your_php_file.php):
<?php
session_start();
include_once("database.php");
if( isset($_POST["message"]) ){
$name = $_SESSION["firstname"];
$time = "[" . date( "H:i", time() + 3600 ) . "]";
// a little of safety:
$unsafe_message = trim($_POST["message"]);
$safe_message = mysql_real_escape_string($unsafe_message);
mysql_query
( "INSERT INTO chat( name, time, message )
VALUES
('$name', '$time', '$safe_message' )" ) or die('error');
echo 'success';
}else{
echo 'error';
}
?>
是否可以不进入页面就运行一个phpfile/function? 我的意思是,如果您创建一个聊天应用程序,并且当您提交消息时整个页面都会重新加载,这真的很令人不安。
我试过 AJAX 但没有成功。 post chat_area
的文本到 PHP 文件是不可能的吗?
<form action="..." method="POST">
<textarea id="chat_area" name="chat_text" cols="50" rows="1"></textarea>
<input id="chat_submit" type="submit" name="submit" value="Posten">
</form>
<?php
session_start();
include_once( "database.php" );
if( $_POST["chat_area"] ){
$name = $_SESSION["firstname"]
$time = "[" . date( "H:i", time() + 3600 ) . "]";
$message = $_POST["chat_area"]
mysql_query( "INSERT INTO chat( name, time, message ) VALUES ('$name', '$time', '$message' )" );
}
?>
这是表单的默认行为。对于类似聊天的应用程序,您应该使用 ajax。不仅用于 posting 表单数据,还用于接收来自后端应用程序的消息。否则,您将不得不重新加载页面以检查您是否收到了一些新消息。
使用 jQuery 可以使用 event.preventDefault() 停止要触发的表单的默认操作,然后 post 数据到 PHP.
您应该将您的应用拆分为 2 个文件。主页和文件,所有数据都发送到(并从中接收)。
你的前端:
<?php
session_start();
// rest of the PHP, if any...
?>
<form method="POST">
<textarea id="chat_area" name="chat_text" cols="50" rows="1"></textarea>
<input id="chat_submit" type="submit" name="submit" value="Posten">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$('#chat_submit').on('click', function(e){
e.preventDefault();
$.ajax({
type : "POST",
url : 'your_php_file.php',
dataType : 'text',
data :{
message : $('#chat_area').val()
},
success : function(data){
if(data == 'success'){
// E.g.: append the message to chat area after it is successfully stored in DB.
}
},
complete : function(status){
// call on complete
},
error : function(response){
// call when error
}
});
});
});
</script>
PHP (your_php_file.php):
<?php
session_start();
include_once("database.php");
if( isset($_POST["message"]) ){
$name = $_SESSION["firstname"];
$time = "[" . date( "H:i", time() + 3600 ) . "]";
// a little of safety:
$unsafe_message = trim($_POST["message"]);
$safe_message = mysql_real_escape_string($unsafe_message);
mysql_query
( "INSERT INTO chat( name, time, message )
VALUES
('$name', '$time', '$safe_message' )" ) or die('error');
echo 'success';
}else{
echo 'error';
}
?>