繁体   English   中英

在同一页面上使用ajax将javascript varibale传递给php变量

[英]Passing javascript varibale to php variable using ajax on the same page

我有一个使用for循环创建的日历。 当用户单击日历中的单元格时,他们将被导航到模式窗口。

$calendar.= '<td class="calendar-day"><a href="#myModal" data-toggle="modal" data-target="#myModal" data-id="'.$list_day .'" data-month="'.$month .'" data-year="'.$year .'" onclick=" document.getElementById('. "'myModal'" . ').style.display = ' . "'block'". ' ;"></button><div style="position:relative;height:100px;">'; 

我将日期,日期和日期分别传递给模式,并将每个日期另存为单独的javascript变量,然后将它们合并在一起以形成javascript变量(日期)。 我想将此变量传递给模式窗口并用作php变量。 我的JavaScript是:

$('#myModal').on('show.bs.modal', function(e) {
var id = $(e.relatedTarget).data('id');
var month = $(e.relatedTarget).data('month');
var year = $(e.relatedTarget).data('year');
var string = id +'/'+ month +'/'+year;
var date = year +'-'+month+'-'+id;

$(e.currentTarget).find('input[name="id1"]').val(string);
$(e.currentTarget).find('input[name="id"]').val(id);
$(e.currentTarget).find('input[name="month"]').val(month);
$(e.currentTarget).find('input[name="year"]').val(year);

 $(".test5").val(id+'/'+month+'/'+'/'+year);

$(document).ready(function() {
    $('#myModal').click(function() {
        $.ajax({
            url: 'my_planner.php',
            type: 'GET',
            data: { var_PHP_data: date },
            success: function(data) {
                $('#result').html(data);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                //case error                    }
            }
        });
    });
});

});

我的模态html代码是:

<div id="myModal" class="modal">

<!-- Modal content -->
<div class="modal-content">
<span class="close">&times;</span>
<div class="modal-body">
  <form action="my_planner.php" method="post">
  <!--<span class="test5"></span>-->
  <!--<span class="test"><input type="text" name="id_disabled" value="" disabled/>-->
  <input class="test" type="text" name="id1" value="" style="text-align:center; border:0px; font-weight:bold; font-size: 25px;"/>
  <hr class="my-4">
  <input type="hidden" name="id" value=""/>
  <input type="hidden" name="month" value=""/>
  <input type="hidden" name="year" value=""/>

<br>
<?$date = $_GET['var_PHP_data']; 
echo 'Date:'.$date;?>
<p id="result"></p>

模态显示字符串日期,但不显示变量? 我要去哪里错了? 我对ajax不熟悉

您可以连接日期并将其添加到data-date ,例如:

$calendar.= '<td class="calendar-day"><a href="#myModal" '
  .' data-toggle="modal" data-target="#myModal" '
  .' data-date="' . $list_day .'/' . $month . '/' .$year .'"'
  .' onclick=" document.getElementById('. "'myModal'" . ').style.display = ' 
 . "'block'". ' ;"></button><div style="position:relative;height:100px;">'; 

在JS中:

var date = $(e.relatedTarget).data('date');

$('#result').html(date);

您不能在PHP中使用JS变量。 如果您构建变量client-side,则您将保留在client-side,直到您将其传递给参数或表单值。

您可以做的是在模式中显示JS变量。

代替这个:

<?$date = $_GET['var_PHP_data']; 
echo 'Date:'.$date;?>

您可以使用以下HTML:

<p>Date: <span class="date_value"></span></p>

并添加此JS:

$(".date_value").text(date);

这样,将用JS日期变量的值填充范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM