【问题标题】:Page is reloaded inside alert window页面在警报窗口内重新加载
【发布时间】:2016-07-04 05:52:21
【问题描述】:

这是假设使用 jQuery 和 $_POST['points']echo 它在 add.php 中获取已检查收音机的 id

添加.php:

  <div class="col-md-10">
    <form role="form" method="POST">
      <div class="radio">
        <label><input type="radio" name="optradio" id="1"> Leadership </label>
        <label><input type="radio" name="optradio" id="2"> Management </label>
        <label><input type="radio" name="optradio" id="3"> Distribution </label>
      </div>

      <div>
      <?php
        if (isset($_POST['points'])) 
        {
          echo $_POST['points']." is the value";
        }
        else
          echo 'none';
      ?>
      </div>
    </form>
  </div>

Javascript:

$("input[type=radio]").on("click",function()
{
    var value=($('input[type=radio]  [name=optradio]:checked').attr('id'));

    $.post("./add.php", {points: value}, function(data)
    {
      alert(data);
    });
});

但是,每次我单击单选按钮时,它都会显示一个警报弹出窗口并重新加载整个add.php 代码INSIDE 警报弹出窗口,而不是通过$_POST['points'] 在@987654328 中回显它@。 页面回显'none' 并且$_POST['points'] 的值在警报弹出窗口中是正确的。

*注意:JS 文件已经加载

我发现它与none 相呼应,因为尚未选中/单击单选按钮。但是在我单击单选按钮后页面不会加载,但页面会在警报窗口内重新加载。

除了警报之外,我还有什么遗漏或者我应该做的吗? 或者 是否有其他方法可以获取已检查收音机的 id?

编辑

  <div class="col-md-10">
    <form role="form" method="POST">
      <div class="radio">
      <?php
        foreach(returnFromTable($GLOBALS['table_key_area']) as $keyarea)
        {
          echo '<label><input type="radio" name="optradio" id="'.$keyarea['id'].'">'.$keyarea['description'].'&nbsp</label>';
        }
      ?>
      </div>

      <div>
      <?php
        if (isset($_POST['points'])) 
        {
          $x = $_POST['points'];
        }
        else
          echo 'none';
      ?>
      </div>
    </form>
  </div>

【问题讨论】:

  • 服务器在 post 调用中返回 add.php 页面。并且您正在警报框中显示此返回值。
  • @M4R1KU 除了警报之外,还有其他方法可以将值从 jquery 返回到 php 吗?警报返回值但重新加载警报内的页面

标签: javascript php jquery alert


【解决方案1】:

您需要更改脚本中的两件事:

1) 使用$('input[name=optradio]:checked').attr('id') 获取Id

2) 在发布请求中使用“积分”而不是积分

$("input[type=radio]").on("click",function()
  {   
      var value=($('input[name=optradio]:checked').attr('id'));

      $.post("viewport.php", {'points': value}, function(data)
      {
        alert(data);
      });
  });

【讨论】:

  • 它只是做同样的事情
【解决方案2】:

你不需要 ajax:

<div class="col-md-10">
    <form role="form" method="POST">
      <div class="radio">
        <label><input type="radio" name="optradio" id="1"> Leadership </label>
        <label><input type="radio" name="optradio" id="2"> Management </label>
        <label><input type="radio" name="optradio" id="3"> Distribution </label>
      </div>

      <div class="result">
      none
      </div>
    </form>
  </div>

js:

$("input[type=radio]").on("click",function()
{   var value = 'none';
        value = $('input[type=radio]  [name=optradio]:checked').attr('id');
    $('.result').text(value+'is the value')
});

【讨论】:

    【解决方案3】:

    由于您使用的 $.post 调用等效于 $.ajax (type: post) 调用,因此服务器将返回与您在 url 中键入 add.php 时相同的响应。

    您不必进行 ajax 调用,只需使用 javascript/jQuery 编写 id。

    $("#some-text-container").text(value);
    

    插入 this 而不是 post call。

    【讨论】:

      【解决方案4】:

      请试试这个:

      <?php
        if (isset($_POST['points'])) 
        {
            echo $_POST['points']." is the value";
        }
        else
                ?>
      <div class="col-md-10">
          <form role="form" method="POST">
            <div class="radio">
              <label><input type="radio" name="optradio" id="1"> Leadership </label>
              <label><input type="radio" name="optradio" id="2"> Management </label>
              <label><input type="radio" name="optradio" id="3"> Distribution </label>
            </div>
      
            <div>
            </div>
          </form>
        </div>
      <?php } ?>
      

      【讨论】:

      • 没有回显,因为 $_POST 在收音机之前加载?
      • @Darrius @M4R1KU 当设置$_POST['points'] 时,目的是仅回显警报消息而不是html的其余部分。正如它现在工作的那样,每次都会回显 $_POST 检查上方的默认 html,无论是在正常页面加载中还是作为 ajax 发布请求的响应。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2020-10-08
      相关资源
      最近更新 更多