使用AJAX post方法

时间:2016-10-05 07:54:27

标签: javascript php jquery ajax

我正在尝试将一个变量从javascript传递给php,但它似乎并没有起作用,我无法弄清楚原因。 我正在使用一个应该做三件事的函数:

  1. 创建变量(基于用户在饼图中单击的内容)
  2. 使用AJAX将该变量发送到PHP
  3. 打开变量发送到的
  4. 的PHP页面

    任务一工作正如控制台日志所确认的那样 任务二不起作用。虽然我得到一个警告说"成功",但在test.php上,变量没有回显 任务三工作。

    Javascript(位于index.php中):

        function selectHandler(e)     {
                // Task 1 - create variable
                var itemNum = data.getValue(chart.getSelection()[0].row, 0);
                if (itemNum) {
    
                    console.log('Item num: ' + itemNum);
                    console.log('Type: ' + typeof(itemNum));
    
                    // Task 2 - send var to PHP
                    $.ajax({
                        type: 'POST',
                        url: 'test.php',
                        dataType: 'html',
                        data: {
                            'itemNum' : itemNum,
                        },
                        success: function(data) {
                                alert('success!');
                        }
                    });
    
                    // Task 3 - open test.php in current tab
                    window.location = 'test.php';
                }
            }
    

    PHP(位于test.php中)

        $item = $_POST['itemNum'];
        echo "<h2>You selected item number: " . $item . ".</h2>";
    

    感谢任何可以提供帮助的人!

5 个答案:

答案 0 :(得分:1)

试试这个:

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

基本上,data是您从PHP文件回显的响应。使用jQuery,您可以append()对您的body元素进行html响应。

答案 1 :(得分:1)

据我所知,你不知道ajax用于什么,如果你从ajax调用重定向你不需要ajax

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

function selectHandler(e)     {
            // Task 1 - create variable
            var itemNum = data.getValue(chart.getSelection()[0].row, 0);
            if (itemNum) {

                console.log('Item num: ' + itemNum);
                console.log('Type: ' + typeof(itemNum));

                window.location = 'test.php?itemNum='+itemNum;
            }
        }

变化:

   $item = $_GET['itemNum'];
    echo "<h2>You selected item number: " . $item . ".</h2>";

或者更好的是,您可以从普通网页的表单中执行简单的帖子请求:)

答案 2 :(得分:0)

你应该改变这段代码

export function service(target: Object, propertyKey: string | symbol, parameterIndex: number, name:string) {
 target['name'] = name;
}

到这个

'itemNum' : itemNum,

答案 3 :(得分:0)

似乎缺少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);
      }
    });

答案 4 :(得分:0)

你可以通过html中的隐藏变量轻松地将数据传递给php,例如我们的html页面包含一个隐藏变量,其中包含一个像这样的唯一ID ..

<input type="hidden" id="hidden1" value="" name="hidden1" />

在我们的javascript文件中包含像这样的ajax请求

  $.ajax({
  type: 'POST',
  url: 'test.php',               
  data: {
      'itemNum' : itemNum,
  }

  success: function (data) {
    // On success we assign data to hidden variable with id "hidden1"  like this
$('#hidden1').val(data);
  },
  error: function (error) {
    alert(error);
  }
});

然后我们可以在表单提交或使用javascript

访问该值eighter

通过Javascript(Jquery)访问

var data=$('#hidden1').val();

通过表单提交(POST METHOD)访问就像这样

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