使用JQuery $ .GET和$ .POST

时间:2016-11-28 06:58:51

标签: javascript php jquery

你必须原谅我的问题的天真。我对使用PHP,HTML和CSS非常熟悉。但是,我正在尝试为一个小项目编写一个简单的统计收集器。我已经倾倒了许多使用jQuery或Ajax的不同示例。我决定使用jQuery作为我的第一种方法。目标是从getinfo.php文件导入值,将它们分配给变量,然后将收集的信息发布到数据库以供以后分析。但是,我遇到了一些麻烦......我正在使用$ .GET请求来获取这个php文件。

GETINFO.PHP

<?php
$browserID = $_SERVER ['HTTP_USER_AGENT'];
$ip = $_SERVER ['REMOTE_ADDR'];
$url = $_SERVER ['REQUEST_URI'];

echo $browserID;
echo $ip;
echo $url;
?>

我的例子相当直截了当,没有什么特别的花哨。对于我的jQuery get和post请求,我写了这个。

 <script type="text/javascript">
        $(document).ready(function(){

            // Define variables to send
            var pageTag = "Test Text";

            // Retrieve PHP variables
            $.get("getinfo.php", function (data) {

                alert("Data:" + data)

                // Post data to database
                $.post("process.php",{
                        page: pageTag

                    },
                    function (response,status){//required callback function
                        alert("*----Received Data----*\n\nResponse : " + response+"\n\nStatus : " + status);
                        //"response" receives - whatever written in echo of above PHP script.

                });
            });
        });
  </script>

你可以看到它是一团糟,是的,我是初学者,除此之外我。无论如何,这两个代码分开工作正常。但是,当我尝试将它们组合起来时,我得不到我需要的结果。当实际帖子发生时,我的var pageTag = "Test Text";甚至没有被推送到服务器。现在我的PostgreSQL数据库正在获取空白条目,保存时间戳,但是这是由process.php文件本身提交的。

PROCESS.PHP

 <?php
  #Creds to access the database
  require_once("connection.php");

  /* Log page and get filenames */
  #$page = input($_GET['page']) or die('ERROR: Missing page ID');
  $page = json_decode(stripslashes($_POST['page']));
  $ip_add = json_decode(stripslashes($_POST['ip_addy']));
  $browser = json_decode(stripslashes($_POST['browser']));
  $timestampInSeconds = $_SERVER['REQUEST_TIME'];
  $date = date("Y-m-d h:i:s", $timestampInSeconds);

  $sql = "INSERT INTO stats (page, date, ip, browser) VALUES ('$page','$date','$ip_add','$browser')";
  pg_query($db,$sql);

  echo $page;
  echo $ip_add;
  echo $date;

  $query="SELECT COUNT(*) total FROM stats WHERE page= '$page'";
  $result = pg_query($db,$query);
  $row = pg_fetch_array($result,0,PGSQL_NUM);
  $count = $row[0];

  $query = "SELECT count(distinct IP) FROM stats WHERE page= '$page'";
  $result = pg_query($db,$query);
  $row = pg_fetch_array($result,0,PGSQL_NUM);
  $UniaquCount = $row[0];
  pg_close($db);

  exit();

所以,快速回顾一下。我需要使用getinfo.php从客户端获取一些数据,然后通过jquery将这些请求发送到process.php以传递到数据库。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

您没有在Process.php文件中发回任何内容。

尝试以下方法:

$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);

在准备好所有数据后,在process.php的末尾使用它。您不一定需要status参数。只需以您想要的任何格式制作数据。

答案 1 :(得分:1)

有很多错误。

首先,在您的&#34; getinfo.php&#34;中,使用json正确回复。像:

$data = array(
             "browserid"=>$browserID,
             "ip"=>$ip,
             "url"=>$url,
             );
header('Content-Type: application/json');
echo json_encode($data);

然后在你的jQuery Ajax中,首先将数据类型设置为:&#34; json&#34;,然后解析它。像:

$.ajax({
  type: "GET",
  dataType: "json",
  url: "getinfo.php",
  success: function(data) {
      var browserid = data["browserid"];
      var ip = data["ip"];
      var url = data["url"];
      //
      // Continue, the POST part (or) whatever you want here..
      //
  }
});

答案 2 :(得分:0)

非常感谢帮助我的每个人。这是我用于ajax请求的最后一段代码:

 <script type="text/javascript">
        $(document).ready(function(){

            // Create the AJAX request
            $.ajax({
                type: "GET",                                       // Using the POST method
                url: "getinfo.php",                                 // The file to call
                dataType: "json",                                   // Our data to pass

                success: function (data) {                               // What to do on success
                    //On success define the following variables from getinfo.php
                    var ip = JSON.stringify(data["ip"]);
                    var url = JSON.stringify(data["url"]);
                    var browser = JSON.stringify(data["browser"]);

                    $.ajax({
                        type: "POST",        //Using the POST method
                        url: "process.php",  //The php file used to submit data to database
                        dataType: "text",    // Our data to pass
                        cache: false,
                        data: {
                            page: url,
                            browser: browser,
                            ip_addy: ip,

                        },
                        success: function (response, status) {
                            alert("*----Received Data----*\n\nResponse : " + response + "\n\nStatus : " + status);

                        }
                    });

                },
            });
        });
    </script>

ajax请求会提取所请求的数据,然后将该数据发布到PostgeSQL数据库。再次感谢大家!我希望这可以帮助其他人试图找出同样的问题。