如何将javascript变量引入php
how to take javascript variable into php
我知道这个问题在堆栈溢出中重复了一遍,但我问这个问题是因为我在尝试这些问题时没有得到正确的答案。我使用的是codeigniter,我有一个用户可以对产品进行评分的表。我需要知道的是,当一个星形按钮被点击并提交时,我需要在数据库中插入是否点击了哪个星形按钮。如果点击第5个按钮,它将显示"优秀"文本。如果单击第4个按钮,它将显示"良好"文本。所以我需要将用户的评分插入数据库。所以请指导我该怎么做?
<form name="myForm7" method="post" action="<?php echo 'http://localhost/ci/businessRateCtrl/insertIntoBusinessReview/'. $Vehicleid; ?>" >
<h1><div class="rating" style="width:200px;float:left;padding-left:1px">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<span class="rate-star" data-rate="Excellent">★</span>
<span class="rate-star" data-rate="Good" >★</span>
<span class="rate-star" data-rate="Okay" >★</span>
<span class="rate-star" data-rate="Unsatisfied" >★</span>
<span class="rate-star" data-rate="Terrible" >★</span>
</div>
</h1>
<div style="float:right;padding-right:450px">
<h3><label id="rateText" name="lblrating"></label></h3>
<script type="text/javascript">
var rateText;
window.onload = function() {
var starList = document.getElementsByClassName('rate-star');
var numOfStars = starList.length;
for(var i = 0; i < numOfStars; i++) {
starList[i].addEventListener('click', starClickHandler, false);
}
}
function starClickHandler(event) {
var star = event.currentTarget;
setActive(star, false);
setActive(star, true);
document.getElementById('rateText').textContent = star.getAttribute('data-rate');
rateText=document.getElementById('rateText').textContent
document.getElementById('rating').value = rateText;
}
function setActive(element, isActive) {
if(isActive) {
element.classList.add('active');
element.nextElementSibling && setActive(element.nextElementSibling, isActive);
}
else {
element.classList.remove('active');
element.previousElementSibling && setActive(element.previousElementSibling, isActive);
}
}
$(document).ready(function(){
$(".rating .rate-star").click(function(){
$(".active").removeClass("active");
$( ".rate-star:lt("+($(this).index()+1)+")" ).addClass("active");
$("#rateText").html($(this).data("rate"));
$("#submitreview").removeAttr("disabled");
});
});
function cancelConfirm(){
return confirm("Are you sure you want to cancel and leave this page?");
}
</script>
<style type="text/css">
.active{
color:yellow;
}
#rateText{
text-align:right;
}
.rating {
unicode-bidi: bidi-override;
direction: rtl ;
}
.rating > .rate-star.active,
.rating > .rate-star:hover,
.rating > .rate-star:hover ~ .rate-star {
color: #FFFF00;
cursor: default;
}
</style>
从下面的代码中,它将属于单击按钮的文本分配到rateText标签中。现在我需要通过该表单的action属性(作为参数)将该文本传递给我的控制器。有人能给我一个解决这个问题的方法吗。
document.getElementById('rateText').textContent = star.getAttribute('data-rate');
我想了一种方法,我不知道它是否正确。下面我提到了strongtext中添加的部分。如果这是正确的,我想知道如何将这个javascript变量作为参数放入表单的action属性中,并将其发送到控制器。
**var rateText;**
window.onload = function() {
var starList = document.getElementsByClassName('rate-star');
var numOfStars = starList.length;
for(var i = 0; i < numOfStars; i++) {
starList[i].addEventListener('click', starClickHandler, false);
}
}
function starClickHandler(event) {
var star = event.currentTarget;
setActive(star, false);
setActive(star, true);
document.getElementById('rateText').textContent = star.getAttribute('data-rate');
**rateText=document.getElementById('rateText').textContent**
}
p.S我添加了你在这里提到的代码。但它是刷新页面,并且显示相同的页面。在url中,它显示了类似于的内容
http://localhost/ci/businessRateCtrl/loadReviewPage/base_url();?%3EbusinessRateCtrl/insertIntoBusinessReview/base_url();
在表单的action属性中,我只使用过action="businessRateCtrl/insertIntoBusinessReview/'.$Vehicleid;?>"以上代码。但我不知道它是怎么附加的http://localhost/ci/businessRateCtrl/loadReviewPage/进入url。有人帮我吗?我正在为这几个小时寻找解决方案。
我不清楚你现在在做什么。你可以设置一个隐藏的输入,然后提交,这似乎是你想要做的?
或者你可以做一个ajax请求,它不需要提交,这意味着没有刷新,这通常会给更好的用户体验
在此处阅读有关ajax请求的更多信息:http://api.jquery.com/jquery.ajax/
附言:这页底部有一些例子。
对于通过表格提交,请在您的表格中添加隐藏输入:
<input type="hidden" id="rating" value="" />
然后当你想在函数中分配它的值时:
function starClickHandler(event) {
var star = event.currentTarget;
setActive(star, false);
setActive(star, true);
document.getElementById('rateText').textContent = star.getAttribute('data-rate');
rateText=document.getElementById('rateText').textContent
document.getElementById('rating').value = rateText;
}
我认为这应该有效,正如其他人所说,最好使用数值而不是字符串来保存在数据库
我可以建议使用jquery和ajax调用而不是javascript吗?使用ajax调用,您可以获得星号的值,并将其传递到php页面,以便在不重新加载页面的情况下将其保存到数据库中。下面是一个快速示例:
html你的还好
jquery
$('.rate-star').click(function(){
var ratestar=$(this).data('rate');
$.ajax({
type: "POST",
url: "../ajax/ajax-rate.php",//here your php page
cache: false,
dataType: "json",
data: {
rate: ratestar
},
success: function (data) {
//if the ajax is done correctly enter in success
if(data.error==false){
$('#rateText').html(ratestar);
}else{
//handle your error
}
},
error: function (e, t, n){
//if there are some problems with the ajax request enter here
}
});
});
php ajax-rate.php
<?php
if(isset($_POST['rate'])){
$rate=$_POST['rate'];
//now save it into the db as you usually do
$message['message']='some message if you need';
$message['error']=false //this is not the error ajax function but it can helps you in the susseccs ajax function to handle errors
echo json_encode($message);
}
?>
这是一些文件http://api.jquery.com/jquery.ajax/
- 将PHP变量传递给jQuery时遇到问题
- 通过javascript重定向html传递php变量
- 如何在php变量中嵌入JQuery代码
- 在javascript函数中使用php变量
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- 从Javascript和Php变量创建Html模板文档
- 如何将php变量作为javascript中列表的元素
- 将PHP变量分配给PHP数组
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 在Javascript甜甜圈图的PHP变量中引用PHP变量
- 使用javascript访问php变量
- 在Javascript文件中获取PHP变量
- 如何为Javascript数组()的使用准备PHP变量
- 如何获取PHP变量数据并将其存储在JavaScript变量中
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 通过Javascript验证PHP变量
- 如何将Ajax数据值分配给PHP变量
- 如何在 bootsrap 完整日历中使用 PHP 变量
- 在javascript中调用PHP变量