设置PHP的会话而不提交表单

时间:2013-07-11 10:58:19

标签: php session html session-variables

我有一个带两个按钮的textarea。一个按钮将预览我输入的文本,另一个按钮将文本提交给服务器。这是我的代码:

<?php
session_start();
$_SESSION['ShortDescription']='';
if(isset($_POST['Submit']))
{...}
?>

<form name="news" action="add_news.php" method="post">
<textarea  rows="5" name="ShortDescription" id="ShortDescription"></textarea>&nbsp
<input type="button" name="Preview" value="Preview Description">
<input type="submit" name="Submit" value="Submit">
</form>

我是PHP和JavaScript的初学者。我知道使用AJAX可以解决问题。但是我对AJAX很新。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在启动会话,之后,您希望根据某人在文本区域中键入的内容创建$ _SESSION变量。假设您不希望在用户单击预览时更改页面(但您希望在将来的情况下能够使用$ _SESSION变量),则需要使用类似AJAX的内容(如您所述)。我发现完成这样的事情的最简单方法是一起使用jQuery和AJAX。

基本上,只要单击预览按钮,您就会创建一个JavaScript函数(使用jQuery)来选择。它看起来像这样。首先,我们在输入标记中添加id ...

<input type="button" id="previewID" name="Preview" value="Preview Description">

接下来我们在javascript文件中创建函数......

 $('#previewID').click(function() {
   request = $.ajax({
    url: "/form.php",
    type: "post",
    data: serializedData
    });
});

form.php可以只是一个表格来检查是否存在$ _POST ['ShortDescription'],如果存在,则清理它并将其存储在$ _SESSION ['ShortDescription']中。 “serializedData”只是正在传递的文本区域的内容。 (这实际上只是通过URL传递变量内容。例如,如果ShortDescription =“HelloThere”,序列化数据将是“ShortDescription=HelloThere”,它会附加到URL ...

www.website.com/form.php?ShortDescription=HelloThere

请记住,你通常不会手动设置它,这只是为了展示这个概念。使用类似的东西:

    var serializedData = $form.serialize();

View this question for an example AJAX request

免责声明:可能有更好的方法来实现这一目标,但我认为我会提供一种可能性,因为还没有人回答!