PHP表单按钮提交会话和更改文本onclick

时间:2016-06-27 06:00:46

标签: php jquery session submit

我想使用提交类型按钮更改会话值和<p>文本。 但是,会话确实发生了变化,但文本没有改变 这里是正文中的PHP代码。

<?php
  if (isset($_POST['lang']) == true && !empty($_POST['lang'])) {
    $_SESSION["language"]=$_POST['lang'];
  }
?>

<p>My Name is Khan</p>

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
    <button type="submit" name="lang" value="jpn" id="jpn">日本語</button>
    <button type="submit" name="lang" value="eng" id="eng">English</button>
</form>

这里是Javascript代码

$(document).ready(function(){
    $("#jpn").on('click', function(){
      $("p").text("私の名前はハーンです");
  });

  $("#eng").on('click', function(){
      $("p").text("My name is Khan");
    });
});

单击日语按钮时,文本更改为闪光灯,但更改为原始文本 我怎样才能解决这个问题? 谢谢..

5 个答案:

答案 0 :(得分:1)

问题是您还提交了表单,如果您不想重新加载页面添加preventDefault(),则会重新加载页面 - 它不会提交表单。

$(document).ready(function(){
    $("#jpn").on('click', function(e){
        e.preventDefault();
      $("p").text("私の名前はハーンです");
  });

  $("#eng").on('click', function(e){
        e.preventDefault();
      $("p").text("My name is Khan");
    });
});

但如果您需要重新加载页面来设置会话,那么您需要使用php更改段落中的文本:

<?php
  if (isset($_POST['lang']) == true && !empty($_POST['lang'])) {
    $_SESSION["language"]=$_POST['lang'];
    if($_POST['lang'] == 'jpn'){
      echo '<p>私の名前はハーンです</p>';
    }else{
      echo '<p>My Name is Khan</p>';        
    }
  }
?>



<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
    <button type="submit" name="lang" value="jpn" id="jpn">日本語</button>
    <button type="submit" name="lang" value="eng" id="eng">English</button>
</form>

答案 1 :(得分:1)

1。)php&#39; s isset返回一个布尔值,无需检查== true

if( isset($_POST['lang']) && !empty($_POST['lang']) )
    $_SESSION["language"] = $_POST['lang'];

2。)如果您想将表单发布到同一文档,您也可以将表单的action留空。

<form action="" method="post">
</form>

3.)你应该通过php将初始状态写入文档,以防止在用户重新加载时显示错误。否则,用户将提交表单,该变量将被设置,但在重新加载后,将显示文本My name is Khan

你可以这样做,例如在一行中:

echo "<p>" . ($_SESSION["lang"] == "jpn" ? "私の名前はハーンです" : "My name is Khan") . "</p>";

或完整if

if( $_SESSION["lang"] == "jpn" )
    echo "<p>私の名前はハーンです</p>";
else
    echo "<p>My name is Khan</p>";

答案 2 :(得分:0)

&#13;
&#13;
$(document).ready(function(){
    $("#jpn").on('click', function(){
      $("p").text("私の名前はハーンです");
  });

  $("#eng").on('click', function(){
      $("p").text("My name is Khan");
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>My Name is Khan</p>

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
    <button type="submit" name="lang" value="jpn" id="jpn">日本語</button>
    <button type="submit" name="lang" value="eng" id="eng">English</button>
</form>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

<p><?php echo (isset($_SESSION["language"]) && $_SESSION["language"] == 'jpn') ? '私の名前はハーンです':'My name is Khan';?></p>

将这个条件放在

标签

答案 4 :(得分:0)

这是因为表单操作正在进行刷新。您需要通过js事件阻止

$(document).ready(function(){
    $("form").on('click','#jpn', function(e){
        e.preventDefault();
      $("p").text("私の名前はハーンです");
    });

  $("form").on('click','#eng', function(e){
        e.preventDefault();
      $("p").text("My name is Khan");
    });
});