你的问题很常见,jQuery 的大佬已经为你解决了。
var encodedText = $("#message-box").text();
查看jQuery 文档以深入讨论 text 函数。
好的,由于戴夫的评论,让我扩展我的答案。关于如何实现我认为戴夫的意思的超基本示例。
您的 HTML:
<!doctype html>
<html>
<head>
<title>Chat</title>
<style>.invalid{border:red}</style>
</head>
<body>
<div id="chat">
<p><span class="user">Foo:</span> Bar</p>
</div>
<form id="message-form" action="/chat.php" method="post">
<textarea id="message" name="message" placeholder="Enter chat message ..." autofocus></textarea>
<input type="submit" value="Send">
</form>
你的 jQuery:
$(function () {
var $chat = $('#chat');
var $messageForm = $('#message-form');
$messageForm.$message = $('#message');
$('#message-form').submit(function (e) {
e.preventDefault();
this.originalMessage = this.$message.val();
this.$message.val('').prop('disabled', true);
$.post('/chat.php', { json: true, message: this.originalMessage }, function (response) {
if (response.error) {
$messageForm.$message
.val($messageForm.originalMessage)
.addClass('invalid')
;
}
else {
$chat.append('<p><span class="user">' + response.name + ':</span> ' + response.message + '</p>');
}
$messageForm.$message.prop('disabled', false).focus();
}, 'json');
});
});
你的PHP:
<?php
$json = filter_input(INPUT_POST, "json", FILTER_VALIDATE_BOOLEAN);
if (($message = filter_input(INPUT_POST, "message", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_REQUIRE_SCALAR)) !== false) {
session_start();
$return = [
"name" => $_SESSION["name"],
"message" => htmlspecialchars($message, ENT_QUOTES|ENT_HTML5),
];
}
else {
$return = [ "error" => true ];
}
if ($json === true) {
header("content-type: application/json");
exit(json_encode($return));
}
var_dump($return);
?>