【问题标题】:Debug variable sent by Jquery (AJAX) at PHP code at serverJquery (AJAX) 在服务器的 PHP 代码中发送的调试变量
【发布时间】:2016-04-11 23:15:36
【问题描述】:

我在网络托管上有一台主机服务器,我的 PHP 文件位于服务器的文件夹中。从我的 HTML 表单中,我使用 Jquery AJAX 发送一些数据,并且我喜欢在服务器端的 PHP 代码中查看所有这些变量。 我的 Jquery AJAX 代码如下。

function sendtoServer() {

     $.ajax({
        url: "advertisementdatavalidationatserver.php",
        type: "POST",
        data: $("#landedForm").serialize(), 
        success:  function(ret){

});
}

我在服务器上的 PHP 代码是

<?php
$data = array();
$data['error'] = false;

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if(!isset($_POST['purpose'])){ 
        $data['error'] = true;
        $data['message'][] = "Purposeerror";
    }

    if(!isset($_POST['type'])){ 
        $data['error'] = true;
        $data['message'][] = "Typeerror";
    }

    if ($_POST['type'] == "With_RC" || $_POST['type'] == "With_BrickNorcal") { 

        if ($_POST['stories'] == "Stories"){
            $data['error'] = true;
            $data['message'][] = "Storieserror";        
        }


        if ($_POST['bedrooms'] == "Bedrooms") {        
            $data['error'] = true;
            $data['message'][] = "Bedroomserror";        
        }

        if ($_POST['bathrooms'] == "Bathrooms") {        
            $data['error'] = true;
            $data['message'][] = "Bathroomserror";        
        }

    }

    if ($_POST['divs_states'] == "Division") {        
            $data['error'] = true;
            $data['message'][] = "Divisionerror";        
    }

    if ($_POST['township'] == "Township") {        
            $data['error'] = true;
            $data['message'][] = "Townshiperror";        
    }

    if ($_POST['price']=="") {        
            $data['error'] = true;
            $data['message'][] = "Priceerror";        
    }else if (!preg_match('/^\d+$/', $_POST['price']) ) {        
            $data['error'] = true;
            $data['message'][] = "Priceinvalid";        
    } 

    if ($_POST['length']=="") {        
            $data['error'] = true;
            $data['message'][] = "Lengtherror";        
    }else if (!preg_match('/^\d+$/', $_POST['length']) ) {        
            $data['error'] = true;
            $data['message'][] = "Lengthinvalid";        
    } 

    if ($_POST['width']=="") {        
            $data['error'] = true;
            $data['message'][] = "Widtherror";        
    }else if (!preg_match('/^\d+$/', $_POST['width']) ) {        
            $data['error'] = true;
            $data['message'][] = "Widthinvalid";        
    }    

    if(!isset($_POST['haveaircon'])){ 
        $data['error'] = true;
        $data['message'][] = "Airconerror";
    }

    if ($_POST['possession'] == "Possession") {        
            $data['error'] = true;
            $data['message'][] = "Possessionerror";        
    }

    if($_POST['date']==""){ 
        $data['error'] = true;
        $data['message'][] = "Dateerror";
    }

    if($_POST['textarea'] == "Please enter additional information here..." || $_POST['textarea'] ==""){ 
        $data['error'] = true;
        $data['message'][] = "Textareaerror";
    }

    if(!isset($_POST['agentowner'])){ 
        $data['error'] = true;
        $data['message'][] = "Agentownererror";
    }

    if($_POST['name'] == ""){ 
        $data['error'] = true;
        $data['message'][] = "Nameerror";
    }

    if($_POST['phone'] == ""){ 
        $data['error'] = true;
        $data['message'][] = "Phoneerror";
    }else if((strlen($_POST['phone']) < 6) || !preg_match('/^\d+$/', $_POST['phone'])){
        $data['error'] = true;
        $data['message'][] = "Phoneinvalid";
    }

    if(!isset($_POST['email']) || empty($_POST['email'])){ 
        $data['error'] = true;
        $data['message'][] = "Emailrequired";
    }else if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
        $data['error'] = true;
        $data['message'][] = "Emailinvalid";
    }

    if(!$data['error']){
        // No errors, save into database

        $con = mysql_connect("localhost","thitsun_admin","z4iufn8n##");

        if (!$con)
        {
           $data['error'] = true;
           $data['message'][] = "Connectionerror";
           die('Could not connect: ' . mysql_error());
        }else{

           mysql_select_db("thitsun_properties_database", $con);

           $purpose = mysql_real_escape_string($_POST['purpose']);           
           $type = mysql_real_escape_string($_POST['type']);
           $stories = NULL;
           $bedrooms = NULL;
           $bathrooms = NULL;
           if ($_POST['type'] == "With_RC" || $_POST['type'] == "With_BrickNorcal") { 
                $stories = intval($_POST['stories']);
                $bedrooms = intval($_POST['bedrooms']);
                $bathrooms = intval($_POST['bathrooms']);
           }
           $divs_states = mysql_real_escape_string($_POST['divs_states']);
           $township = mysql_real_escape_string($_POST['township']);
           $price = intval($_POST['price']);
           $length = intval($_POST['length']);
           $width = intval($_POST['width']);

           if($_POST['haveaircon'] == "yes")
               $haveaircon = "yes";
           else
               $haveaircon = "no";
           if($_POST['havetelephone'] == "yes")
               $havetelephone = "yes";
           else
               $havetelephone = "no";

           $possession = mysql_real_escape_string($_POST['possession']);
           $date = mysql_real_escape_string($_POST['date']);
           $textarea = null;
           if($_POST['textarea'] != "Please enter additional information here..." || $_POST['textarea'] != ""){ 
              $textarea = mysql_real_escape_string($_POST['textarea']);
           }

           $agentowner = mysql_real_escape_string($_POST['agentowner']);
           $name = mysql_real_escape_string($_POST['name']);
           $phone = mysql_real_escape_string($_POST['phone']);
           $email = mysql_real_escape_string($_POST['email']);

           $address = NULL;
           if($_POST['address'] != "Please key in full address if you are ok..." || $_POST['address'] != ""){ 
              $address = mysql_real_escape_string($_POST['address']);
           }          

           $query = "INSERT INTO `thitsun_properties_database`.`registered_properties`(`id`, `purpose`, `type`, `num_stories`, `bedrooms`, `bathrooms`, `div_state`, `township`, `price`, `length`, `width`, `have_phone`, `have_aircon`, `possession`, `available_date`, `description`, `agentowner`, `name`, `phone`, `email`, `address`, `submitteddate`) VALUES (NULL,'$purpose', '$type','$stories', '$bedrooms', '$bathrooms', '$divs_states', '$township', '$price', '$length', '$width', '$havetelephone', '$haveaircon', '$possession', '$date', '$textarea', '$agentowner', '$name', '$phone', '$email', '$address',CURRENT_TIMESTAMP);";
   // `id`, `purpose`, `type`, `num_stories`, `bedrooms`, `bathrooms`, `div_state`, `township`, `price`, `length`, `width`, `have_phone`, `have_aircon`, `possession`, `available_date`, `description`, `agentowner`, `name`, `phone`, `email`, `address`, //`submitteddate`


    //'$purpose', '$type','$stories', '$bedrooms', '$bathrooms', '$divs_states', '$township', '$price', '$length', '$width', '$havetelephone', '$haveaircon', '$possession', '$date', '$textarea', '$agentowner', '$name', '$phone', '$email', //'$address',CURRENT_TIMESTAMP
           if(mysql_query($query,$con) or die("Insertion Failed:".mysql_error()))
           {
              if(mysql_affected_rows($con)!=1){
                 $data['error'] = true;
                 $data['message'][] = "Connectionerror";
              }
           }

            mysql_close($con);
        }

    }
}

// then echo the $data array you have built as JSON to use in jquery. 
//This will be what is returned in your AJAX request
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($data);
?>

我喜欢在将$name, $email, $phone 等所有这些变量放入数据库之前对其进行调试。当然,一旦它们成功保存到数据库中,我可以检查。但是在某些情况下,如果它们无法保存到数据库中,我需要检查这些变量中的值是什么。

所有讨论都说使用 print、print_r 或 echo。我使用了它们,但我没有看到任何输出,或者坦率地说不知道在哪里可以看到这些输出。我检查了控制台(F12),但那里什么都没有。

我的查询是我在位于主机服务器的 .php 文件中有 PHP 代码。如何在 PHP 代码中查看通过 AJAX 发送的变量?

谢谢

【问题讨论】:

  • 您必须查看您生成的 html,它们打印在那里。从浏览器调用 php url,您将看到输出。
  • var_dump($_POST['type']); die(); 不要在 prod 环境中执行此操作。
  • 这样更好,现在人们可以看到你在做什么
  • @Abdulla 不,更复杂的是,他想知道如何查看在对服务器脚本的 AJAX 调用中提供的数据,这样他就可以看到在服务器上发送到服务器的内容

标签: php jquery html ajax


【解决方案1】:

我这样做的方法是将print_r($_POST) 的输出写入服务器上的文件,因为正如您所说,没有控制台或窗口可以让您看到数据进入为您的 AJAX 调用提供服务的服务器脚本

<?php
$data = array();
$data['error'] = false;

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    file_put_contents('somefilename.txt', print_r($_POST,true), FILE_APPEND);

    // your other code

使用FILE_APPEND 选项会将每个调用添加到文件末尾,这样您就可以在每次更改时检查 javascript(AJAX) 代码中所做的更改

【讨论】:

  • 你运气好吗?
【解决方案2】:

printechoprint_rvar_dump 和其他打印函数输出到视口 - 在大多数情况下,这将是浏览器。

如果您的文件index.php 包含:

<?php echo "Hello, world!" ?>

访问//index.php会显示

你好,世界!

同样,如果通过命令行执行,例如&gt; php index.php,您将直接在终端中看到输出。


要查看printprint_rechovar_dump 之间的区别,请参阅this post

【讨论】:

    【解决方案3】:

    advertisementdatavalidationatserver.php的前几行添加这个:

    var_dump($_POST);
    die();
    

    打开网络工具(例如 chrome F12) 单击“网络”选项卡。 发出ajax请求。 点击回复。 响应将包含 $_POST 的转储

    【讨论】:

    • 谢谢,这是有道理的。让我测试一下。
    【解决方案4】:

    这是一个在当前目录的错误日志文件中记录任何内容的函数,如果你想将它们记录在某个目录中,只需在error_log的第三个参数之前添加它

      <?php
        //example of usage
        _log("this is a string");
        _log(array("key",4));
    
    
        function _log($msg)
        {
            if(is_string($msg))
            {
                error_log("\n".$msg,3,"error_log");
            }
            else
            {
                error_log("\n".print_r($msg,true),3,"error_log");
            }
        }
        ?>
    

    【讨论】:

    • 那是另一种方式。让我测试一下。
    【解决方案5】:

    由 PHP 发起的打印由 Apache、Nginx 等网络服务器解释。例如,您有文件index.php,其内容如下:

    <html>
      <title>Hello World</title>
      <body>
        <?php
          print("Hello, World!");
        ?>
      </body>
    </html>
    

    然后将此文件添加到您的网络服务器的文件夹中,例如/var/www/index.php 并且您使用浏览器访问您的网络服务器,您可以看到您的 PHP 打印输出。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2012-03-08
    • 1970-01-01
    • 2012-07-11
    • 2011-01-31
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多