【问题标题】:Can I use jQuery to update the PHP session whilst typing?我可以在打字时使用 jQuery 更新 PHP 会话吗?
【发布时间】:2012-06-06 13:07:00
【问题描述】:

我有一个文本区域。我想在用户键入时更新服务器上的 PHP 会话。因此,当他们打字时,会话会更新。如果他们在没有提交表单的情况下离开页面,我仍然可以调用并返回“实时会话创建”的信息?

看起来像:

<form action="submit.php">

<textarea rows="10" id="question" name="question"></textarea>

<input type="submit" value="save">

</form>

<script type="text/javascript">
var formData = $("#question").val();
$(function() {
        function goSession(formData) {
            POST="http://updatesession.php.com/?do="+formData;
        }
        $("#question").change()({
            goSession();
        });
    });

</script>

PHP

<?php

session_start();

$sessionTheSavedQuestionForm=$_REQUEST["do"];
if($sessionTheSavedQuestionForm=="0" || $sessionTheSavedQuestionForm==""){
    $_SESSION["sessionTheSavedQuestionForm"]=0;
} else {
    $_SESSION["sessionTheSavedQuestionForm"]=$sessionTheSavedQuestionForm;
}

?>

【问题讨论】:

  • 搜索自动完成功能 - 请使用用户名表单等进行检查。不过是个好方法:)

标签: php jquery ajax session real-time


【解决方案1】:

结合使用计时器和输入的字符。

这就是我想出的。我有一段时间没用过 JS,所以它可能看起来有点生疏,但它确实有效。

在顶部文本区域中输入一些内容,然后观察它出现在底部文本区域中

http://jsfiddle.net/nfjAE/

不要将数据发送到文本区域,而是查看AJAX library provided by jQuery

我已经更新了我的小提琴:http://jsfiddle.net/nfjAE/3/,使用了一个不含 jQuery 的答案,包括一个 AJAX 调用示例。

【讨论】:

  • 这太棒了。它(我读到即使我使用 Nginx 也会破坏服务器)也许我应该在鼠标移出或停止输入时尝试事件监听器。
【解决方案2】:

您可以在定义的时间间隔后发送 ajax 调用,而不是键入每个字符以保存在会话或数据库中,无论您喜欢什么。使用 jquery ajax 发送数据。你可以找到如何发送ajax调用here

function SendData(event) {


/* get some values from elements on the page: */
var $form = $( this ),
    term = $form.find( 'input[name="s"]' ).val(),
    url = $form.attr( 'action' );

/* Send the data using post and put the results in a div */
$.post( url, { s: term },
  function( data ) {

  }
);
}​

setInterval(SendData, 5000); // This will call above method after every 5 seconds

【讨论】:

  • 不要让我们的样品过多NOT
  • 你能给我们看一些示例代码吗,因为我提供的是他粗鲁的意思。说得好..
  • 在每个键上发送 ajax 调用通常是为了自动完成并且效果很好。
  • @dystroy 但我猜它会破坏你的网络服务器。我每分钟敲击 500 次按键。这大约是每秒 8 个请求。
【解决方案3】:

你可以试试;

$("#question").keyup(function() {
var formData = $("#question").val();
 //AJAX REQUEST
});

并在您的文本区域中作为;

<textarea rows="10" id="question" name="question"><?php echo $sessiondata; ?></textarea>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2011-12-05
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多