将Javascript变量传递给PHP,然后在不刷新的情况下重新加载页面

将Javascript变量传递给PHP,然后在不刷新的情况下重新加载页面,javascript,php,ajax,Javascript,Php,Ajax,如何在通过Ajax向PHP发送javascript变量后重新加载页面而不重新刷新 下面是我正在创建的一个分析资产性能的网页的图片 我想做的是以下几点 当用户选择图中带有的测试块时,选择框将更新为该特定测试块内的所有子测试。但是,我不想刷新页面。我已经设法通过ajax将选定的测试块发送到PHP代码中,但无法让ajax在不刷新的情况下重新加载页面 当前,当选择测试块时,标签将返回到PHP并存储在$\u SESSION['label']变量中。然后在面板标题#子测试图表选择中使用。但是,如果没有页面刷

如何在通过Ajax向PHP发送javascript变量后重新加载页面而不重新刷新

下面是我正在创建的一个分析资产性能的网页的图片

我想做的是以下几点

当用户选择图中带有的测试块时,选择框将更新为该特定测试块内的所有子测试。但是,我不想刷新页面。我已经设法通过ajax将选定的测试块发送到PHP代码中,但无法让ajax在不刷新的情况下重新加载页面

当前,当选择测试块时,标签将返回到PHP并存储在$\u SESSION['label']变量中。然后在面板标题#子测试图表选择中使用。但是,如果没有页面刷新,标签将不会更新,这是我想要避免的

阿贾克斯:

PHP:

PHP回声HTML

<?php
    echo '<div class="row">
              <div class="col-lg-12 subtest-select">
                  <div class="panel panel-default">
                      <div class="panel-heading">
                          <h3 class="panel-title" id="subtest-chart-select"><i class="fa fa-bar-chart-o fa-fw"></i>' . $_SESSION['label'] . ' Subtest Select </h3>
                      </div>
                      <select class="form-control">
                          <option>1</option>
                      </select>
                  </div>
              </div>
         </div>'
     ?>

我仍然需要编写PHP代码来更新所选测试块中的子测试选项


任何帮助都将不胜感激,因为我一直在努力让它看起来永远有效。

在成功函数中,您需要更新要更改的DOM部分。在PHP端,只需返回blade部分或任何要显示的HTML

$(document).on('submit', 'form#form-grad', function (e) {
    e.preventDefault();
    var context = $(this);
    var thisForm = context.closest('form');

    $.ajax({
        url: thisForm.attr('action'),
        method: 'PUT',
        data: thisForm.serialize(),
        success: function (response) {
            $('#updatearea').html(response.pt_html);
             // Close grading form
        }
    });

    return false;
}); 

在success函数中,需要更新要更改的DOM部分。在PHP端,只需返回blade部分或任何要显示的HTML

$(document).on('submit', 'form#form-grad', function (e) {
    e.preventDefault();
    var context = $(this);
    var thisForm = context.closest('form');

    $.ajax({
        url: thisForm.attr('action'),
        method: 'PUT',
        data: thisForm.serialize(),
        success: function (response) {
            $('#updatearea').html(response.pt_html);
             // Close grading form
        }
    });

    return false;
}); 
在$.ajax()集合中

在$.ajax()成功函数中说:

success: function(data) {
    $('.inside_whereever_you_want_to_show_this').html(data);
}
编辑:

要仅更新页面上的一个值,您可以:

a) 在PHP中,只打印这个值(这样整个页面就只有这个值)

b) 更好的方法(在系统方法中)是使用json响应,在这里您还可以返回更多的独立变量:

  • 将数据类型设置为json
  • Success函数将使用$('.subtest updateable').html(data.label)
  • 在PHP打印json_编码中(数组('label'=>$\u会话['label'],'someother'=>$someother_变量))
  • 您仍然应该在页面的可更新部分周围放置span(或其他一些html元素)(以避免在javascript中写入常量)
在$.ajax()集合中

在$.ajax()成功函数中说:

success: function(data) {
    $('.inside_whereever_you_want_to_show_this').html(data);
}
编辑:

要仅更新页面上的一个值,您可以:

a) 在PHP中,只打印这个值(这样整个页面就只有这个值)

b) 更好的方法(在系统方法中)是使用json响应,在这里您还可以返回更多的独立变量:

  • 将数据类型设置为json
  • Success函数将使用$('.subtest updateable').html(data.label)
  • 在PHP打印json_编码中(数组('label'=>$\u会话['label'],'someother'=>$someother_变量))
  • 您仍然应该在页面的可更新部分周围放置span(或其他一些html元素)(以避免在javascript中写入常量)

也许您正在寻找这个jQuery函数,我不确定是否完全理解这个问题。@Polak我已经更新了这个问题,以便更清楚地了解我想要什么以及目前正在做什么。在代码片段膨胀之前,请参阅介绍的最后一段,正如我所看到的,下面的两个答案基本相同,您必须用ajax响应中的html替换要“刷新”的区域。jQuery.load()可以做到这一点,而$('#updatearea').html('anything')也可以。也许您正在寻找这个jQuery函数,我不确定是否完全理解这个问题。@Polak我已经更新了这个问题,以便更清楚地了解我想要什么以及目前正在做什么。在代码片段膨胀之前,请参阅介绍的最后一段,正如我所看到的,下面的两个答案基本相同,您必须用ajax响应中的html替换要“刷新”的区域。jQuery.load()可以做到这一点,而$('#updatearea').html('anything')也可以。这似乎是将页面的全部内容放入指定的div中。我只想用更新后的PHP$\u会话值重新加载特定的div。为了更清晰,我更新了原始问题。这似乎是将页面的全部内容放在指定的div中。我只想用更新的PHP$\u会话值重新加载该特定的div。为了更清晰,我更新了原始问题
success: function(data) {
    $('.inside_whereever_you_want_to_show_this').html(data);
}
<?php echo $_SESSION['label']
<h3 class="panel-title" id="subtest-chart-select"><i class="fa fa-bar-chart-o fa-fw"></i><span class="subtest-updateable">' . $_SESSION['label'] . '</span> Subtest Select </h3>
success: function(data) {
    $('.subtest-updateable').html(data);
}