我想使用提交类型按钮更改会话值和<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");
});
});
单击日语按钮时,文本更改为闪光灯,但更改为原始文本 我怎样才能解决这个问题? 谢谢..
答案 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)
$(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;
答案 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");
});
});