AJAX变量javascript到php不起作用

时间:2017-10-27 13:45:23

标签: javascript php ajax

大家好我不明白我的代码有什么问题。如果有人帮助我,我将非常感激。 PHP中的参数值永远不会改变。

表格

<form id= 'id' method="post" ><input type='text' value='<?php echo $var1; ?>' name='<?php echo $var3; ?>'> <input type='text' value='<?php echo $var2; ?>' name='<?php echo $var3; ?>'><input type='submit' value='Update' onclick = 'update("<?php echo $var1 ?>", "<?php echo $var2 ?>", "<?php echo $var3 ?>"); '><br></form>

JavaScript

function update(var1, var2, var3){
    $.ajax({
        type: 'post',
        url: 'file.php',
        data: {
            'var1' : var1,
            'var2' : var2,
            'var3' : var3
        },

    });   
}

PHP:

$var1 =  '';
if(isset($_POST['var1']))
    $var1 = $_POST['va1'];

$var2 = '';
if(isset($_POST['var2']))
    $var2 = $_POST['var2'];

$var3 =  '';
if(isset($_POST['var3']))
    $var3 = $_POST['var3'];

2 个答案:

答案 0 :(得分:0)

您的JavaScript执行此操作:

success: function( data ) {
    console.log( data );
}

因此,无论PHP脚本的输出是什么,它都将在浏览器的开发人员工具中记录到控制台。

你的PHP,这样做:

$var1 = !empty($_POST['var1']) ? $_POST['var1'] : '';
if(isset($_POST['var1']))
    $var1 = $_POST['va1'];

这是多余的,因为你基本上做了两次同样的事情:

$var1 = !empty($_POST['var1']) ? $_POST['var1'] : '';

......就足够了。

但是,PHP确实全部

设置变量,然后不输出任何内容。

因此,当您在JS中记录data时,不会输出任何内容。

如果你想要发生任何有用的事情,你需要更改PHP以便它对变量做些什么。

你也说过:

<input type='text' value='<?php echo $var1; ?>'

这表明您可能希望设置变量以更改输入中的值。

这不会发生。

  1. 您运行程序并获得一些输出(HTML文档)。
  2. 您运行了另一个程序但未获得任何输出
  3. 它们是不同的程序(或者它们可能是在不同时间运行的相同程序)。

    第二个程序对第一个程序的输出没有影响。

    通过比较来考虑这个:

    1. 在Microsoft Word中编写文档
    2. 打印
    3. 在Microsoft Word中编写另一个文档
    4. 看看论文
    5. 你在纸上打印的内容因为你写了另一份文件而发生了变化。

      如果您想更改输入值,则需要将数据发送到浏览器并使用JavaScript进行更改。

      首先,以合理的格式输出数据:

      header("Content-Type: application/json");
      echo json_encode({
          var1 => $var1,
          var2 => $var2,
          var3 => $var3,
      });
      

      然后编写JS以对该数据执行某些操作:

          success: function( data ) {
              // This sets the value of the first input element in the document by way of example. Extrapolate from there to set the things you actually care about
              jQuery("input").val(data.var1);
          }
      

答案 1 :(得分:-1)

如果有$_POST你应该用isset检查,那应该就够了。无需!empty

$var1 = isset($_POST['var1']) ? $_POST['var1'] : "";