使用AJAX post方法将变量从Javascript发送到PHP

使用AJAX post方法将变量从Javascript发送到PHP,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图将一个变量从javascript传递到php,但它似乎不起作用,我也不知道为什么。 我使用的函数应该做三件事: 创建变量(基于用户在饼图中单击的内容) 使用AJAX将该变量发送到PHP 打开变量发送到的PHP页面 任务一在控制台日志确认后工作。 任务二不起作用。虽然我收到一个警告,上面写着“Success”,但test.php上的变量没有得到响应。 任务三有效。 Javascript(位于index.php中): PHP(位于test.PHP中) $item=$\u POST['itemN

我试图将一个变量从javascript传递到php,但它似乎不起作用,我也不知道为什么。 我使用的函数应该做三件事:

  • 创建变量(基于用户在饼图中单击的内容)
  • 使用AJAX将该变量发送到PHP
  • 打开变量发送到的PHP页面
  • 任务一在控制台日志确认后工作。
    任务二不起作用。虽然我收到一个警告,上面写着“Success”,但test.php上的变量没有得到响应。
    任务三有效。

    Javascript(位于index.php中):

    PHP(位于test.PHP中)

    $item=$\u POST['itemNum'];
    回显“您选择的项目编号:”$项目。".";
    
    感谢所有能帮忙的人

    试试这个:

    success: function(data) {
        $("body").append(data);
        alert('success!');
    }
    
    基本上,
    data
    是您从PHP文件中回显的响应。使用jQuery,您可以
    append()
    将html响应添加到body元素。

    尝试以下操作:

    success: function(data) {
        $("body").append(data);
        alert('success!');
    }
    

    基本上,
    data
    是您从PHP文件中回显的响应。使用jQuery,您可以
    append()
    将html响应添加到body元素。

    您应该更改此代码

    'itemNum' : itemNum,
    
    对此

    itemNum : itemNum,
    

    您应该更改此代码

    'itemNum' : itemNum,
    
    对此

    itemNum : itemNum,
    

    从我所能告诉你的,你不知道ajax是用来做什么的,如果你从ajax调用重定向表单,你就不需要ajax了

    请参阅以下函数(无ajax):

    更改:

       $item = $_GET['itemNum'];
        echo "<h2>You selected item number: " . $item . ".</h2>";
    
    $item=$\u GET['itemNum'];
    回显“您选择的项目编号:”$项目。".";
    

    或者最好像普通页面那样从表单发出一个简单的post请求:)

    我可以告诉你,你不知道ajax是用来做什么的,如果你曾经重定向表单ajax调用,你就不需要ajax了

    请参阅以下函数(无ajax):

    更改:

       $item = $_GET['itemNum'];
        echo "<h2>You selected item number: " . $item . ".</h2>";
    
    $item=$\u GET['itemNum'];
    回显“您选择的项目编号:”$项目。".";
    

    或者最好像普通页面那样从表单中执行一个简单的post请求:)

    似乎缺少
    contentType
    ,请查看这是否有帮助:

        $.ajax({
          type: 'POST',
          url: 'test.php',
          dataType: "json",          
          data: {
              'itemNum' : itemNum,
          },
          contentType: "application/json",
          success: function (response) {
            alert(response);
          },
          error: function (error) {
            alert(error);
          }
        });
    

    似乎缺少
    contentType
    ,请查看这是否有帮助:

        $.ajax({
          type: 'POST',
          url: 'test.php',
          dataType: "json",          
          data: {
              'itemNum' : itemNum,
          },
          contentType: "application/json",
          success: function (response) {
            alert(response);
          },
          error: function (error) {
            alert(error);
          }
        });
    

    您可以通过html中的隐藏变量轻松地将数据传递给php,例如,我们的html页面包含一个具有如下唯一id的隐藏变量

    <input type="hidden" id="hidden1" value="" name="hidden1" />
    
    然后我们可以在表单提交或使用javascript访问该值

    通过Javascript(Jquery)访问是

    var data=$('#hidden1').val();
    
    通过表单提交(POST方法)访问就像这样

    <?php
    $data=$_POST['hidden1'];
    // remaining code goes here
    ?>
    

    您可以通过html中的隐藏变量轻松地将数据传递给php,例如,我们的html页面包含一个具有如下唯一id的隐藏变量

    <input type="hidden" id="hidden1" value="" name="hidden1" />
    
    然后我们可以在表单提交或使用javascript访问该值

    通过Javascript(Jquery)访问是

    var data=$('#hidden1').val();
    
    通过表单提交(POST方法)访问就像这样

    <?php
    $data=$_POST['hidden1'];
    // remaining code goes here
    ?>
    
    
    
    我认为您的问题在于数据类型,因为您发送的是json,但定义的是html。尝试使用
    dataType:'json'
    @DekiChan dataType是响应类型。回送的值在Ajax结果中(这里称为数据)。我认为您的问题在于数据类型,因为您发送的是json,但定义的是html。尝试使用
    数据类型:“json”
    @DekiChan数据类型是响应类型。回送的值在Ajax结果中(这里称为数据)。带引号或不带引号都没有问题。@RaxWeber但这发生在我身上,当变量在php中带引号时,我无法获得它们,在删除它后,效果很好!好吧,PHP不同于JavaScript。有引号或没有引号都没有错。@RaxWeber但这发生在我身上,当变量在PHP中有引号时,我无法获得它们,在删除它之后,它工作了!嗯,PHP不同于JavaScript。是的,为了完成一项作业,我必须非常快地学习PHP。它工作得很好。比你多!!!:)是的,为了完成作业,我必须很快地学习PHP。它工作得很好。比你多!!!:)