获取HTML标记值并分配给PHP变量

时间:2016-09-12 09:30:50

标签: javascript php jquery html

每当我打开弹出窗口时,我都会使用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

3 个答案:

答案 0 :(得分:3)

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

因此,您无法直接将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'];

答案 1 :(得分:3)

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

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

然后使用

$_GET['trackname']

但是你应该在发布之前逃避所有获取变量!

答案 2 :(得分:0)

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

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

HTML:

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

JS:

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