抓取HTML标签值并分配给PHP变量


Grab HTML tag value and assign to PHP variable

我有JavaScript改变输入标签的值,每当我打开我的弹出窗口,它都执行成功。当我检查标签时,每次的值都是正确的。现在在这个弹出窗口中,我想用PHP变量回显值,但这似乎不起作用。我理解PHP的整个概念是服务器端,JavaScript是客户端,但因为值改变了,它不应该重要,因为值在那里,PHP应该能够捡起它,即使我重新打开弹出窗口。

知道如何实现这一点吗?

我的代码如下。我不能让页面重新加载(例如,使用post方法等)。

HTML输入标签:

<td class="alarmvalue" style="">
    <input type="checkbox" name="tracknameneeds" id="tracknameneeds" style="text-align:center;" class="form-control" value="">
</td>

试图回显输入标签值的代码:

<?php 
$trackname = "<script>document.getElementByID('tracknameneeds').value;</script>";
?>   

<!-- Play Options localstorage etc -->
<div class="context-menu">
    <div id="modal-pl-playpopup" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-pl-playpopup-label" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h3 class="modal-title" id="modal-pl-clear-label">Play Options</h3>
                </div>
                <div class="modal-body">
                    Choose from the following...<br>
                    <p>You Chose: <?php echo $trackname;?></p>
                    <br> 
                    <br>
                    <a href="javascript:;" class="btn btn-default btn-lg" style="width:100%" data-cmd="add" data-dismiss="modal"><i class="fa fa-plus-circle sx"></i> Add To Queue</a><br> <div style="padding-top:5px"></div>
                    <a href="javascript:;" class="btn btn-default btn-lg" style="width:100%" data-cmd="addplay" data-dismiss="modal"><i class="fa fa-play sx"></i> Add And Play</a><br><div style="padding-top:5px"></div>
                    <a href="javascript:;" class="btn btn-default btn-lg" style="width:100%" data-cmd="addreplaceplay" data-dismiss="modal"><i class="fa fa-share-square-o sx"></i> Add, Replace And Play</a>
                </div>
            </div>
        </div>
    </div>
</div>

我的JS:

var tracknamepopup;
tracknamepopup = o.data("path"); //assign song name to variable
document.getElementById('tracknameneeds').value = tracknamepopup; //assign the grabbed song name to inputs value to try grab that in php

所有的HTML代码和javascript的执行都是在服务器端PHP执行完成后完成的,并且响应被发送到客户端。

所以你不能直接绑定或分配HTML标签值给PHP。

但是你可以通过AJAX设置它,并将它存储在会话中,以便下次脚本在PHP上执行。

JS中的代码应该是:
var tracknamepopup;
tracknamepopup = o.data("path"); //assign song name to variable
document.getElementById('tracknameneeds').value = tracknamepopup; //assign the grabbed song name to inputs value to try grab that in php
// you can write code for call update session varible using ajax
updateServerSession('tracknameneeds',tracknamepopup);
function updateServerSession(session_index,value) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "update_ajax?index"+session_index+"&value="+value, true);
  xhttp.send();
}
update_ajax.php中的代码
<?php
session_start();
$_SESSION[$_GET['index']]=$_GET['value'];

我认为最简单的方法就是使用get变量:

window.open("http://www.yoursite.com/popup.php?trackname=".concat(document.getElementByID('tracknameneeds').value));

,然后使用

$_GET['trackname']

但是你应该在发布前转义所有get变量!

我所做的可能不是最好的解决方案,但效果很好。

有一个空白标签(在我的情况下,我使用了一个标题(h1,h2等标签)),并给它一个id。使用js操作Inner-HTML来显示当前的轨道。

HTML:

<h2 id="songbacktag"></h2>

JS:

var tracknamepopup;
tracknamepopup = o.data("path");
document.getElementById("songbacktag").innerHTML = tracknamepopup;