每当我打开弹出窗口时,我都会使用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">×</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
答案 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;