【问题标题】:ajax alert data not return the value of php echoajax警报数据不返回php echo的值
【发布时间】:2019-03-13 21:14:12
【问题描述】:

如何在 javascript 中提醒来自 php 的值回显

注意我尝试了警报(数据),但由于 php 中的问题,它在成功时没有给出任何验证

我担心的是,当我尝试进行验证时,即使php中的数据或回显是“Error1”、“Error2”或“Error3”,它也会直接进入其他事情,即使是导入成功也是如此,请帮助..

这是我的ajax

<script>  
      $(document).ready(function(){  
           $('#upload_csv').on("submit", function(e){  
                e.preventDefault(); //form will not submitted  
                $.ajax({  
                     url:"import.php",  
                     method:"POST",  
                     data:new FormData(this),  
                     contentType:false,          // The content type used when sending data to the server.  
                     cache:false,                // To unable request pages to be cached  
                     processData:false,          // To send DOMDocument or non processed data file it is set to false  
                     success: function(data){  
                        if(data == 'Error1')
                        {
                            alert("Error1");
                        }
                        else if(data == 'Error2')
                        {
                            alert("Error2");
                        }
                        else if(data == 'Error3')
                        {
                            alert('Error3');
                        }
                        else
                        {
                            alert('Import Successfull');
                            $('#employee_table').html(data);
                        }                       
                     }
                })  
           });  
      });  
 </script>  

这里是php代码

<?php  
 if(!empty($_FILES["employee_file"]["name"]))  
 {  
      $connect = mysqli_connect("localhost", "root", "", "db");  
      $output = '';  
      $allowed_ext = array("csv");  
      $tmp = explode(".", $_FILES["employee_file"]["name"]);
      $extension = end($tmp); 
      if(in_array($extension, $allowed_ext))  
      {  
           $file_data = fopen($_FILES["employee_file"]["tmp_name"], 'r');  
           fgetcsv($file_data);
              while($row = fgetcsv($file_data))  
           {
               $try = count($row);
               if($try === 6){             
                $id = mysqli_real_escape_string($connect, $row[0]);
                $name = mysqli_real_escape_string($connect, $row[1]);  
                $address = mysqli_real_escape_string($connect, $row[2]);  
                $gender = mysqli_real_escape_string($connect, $row[3]);  
                $designation = mysqli_real_escape_string($connect, $row[4]);  
                $age = mysqli_real_escape_string($connect, $row[5]);                
                $query = "  
                INSERT INTO tbl_employee  
                     (id,name, address, gender, designation, age)  
                     VALUES ('$id','$name', '$address', '$gender', '$designation', '$age')  
                ";              
                mysqli_query($connect, $query);
               }else
               {

                   echo 'Error3';
                   break;
               }                   
            } 

           echo $output;  
      }  
      else  
      {  
           echo "Error1";  
      }  
 }  
 else  
 {  
      echo "Error2";  
 }  
 ?>  

【问题讨论】:

  • 你有没有试过在if(data == 'Error1') 前面加上console.log(data); ???
  • 是的,但没有帮助
  • @Paladin 我试过但没有帮助
  • 您的 while 条件看起来很奇怪。如果你有 6 行,你会得到一个无限循环
  • 不是用于文件计数。

标签: javascript php mysql ajax


【解决方案1】:

alter() 无法输出复杂数据。 尝试使用console.log()

数据将出现在浏览器控制台中,而不是直接弹出。 您可以按F12然后点击控制台查看

【讨论】:

  • consloe打开时需要请求数据,否则控制台不会打印数据。如果您先请求数据。
  • 在 PHP 中你可以像这样回显{"error":"ERROR1"},在 javascript 中得到这样的结果:consloe.log(data.error)
【解决方案2】:

尝试使用json返回值, 关于js

<script>  
      $(document).ready(function(){  
           $('#upload_csv').on("submit", function(e){  
                e.preventDefault(); //form will not submitted  
                $.ajax({  
                     url:"import.php",  
                     method:"POST",
                     dataType: 'JSON',  
                     data:new FormData(this),  
                     contentType:false,          // The content type used when sending data to the server.  
                     cache:false,                // To unable request pages to be cached  
                     processData:false,          // To send DOMDocument or non processed data file it is set to false  
                     success: function(data){  
                        // look into detail json data
                        console.log(data);
                        if(data['status'] == false)
                        {
                            alert(data['error']);
                        } else
                        {
                            alert('Import Successfull');
                            $('#employee_table').html(data);
                        }                       
                     }
                })  
           });  
      });  
 </script>  

关于php

<?php  

 if(!empty($_FILES["employee_file"]["name"]))  
 {  
      $connect = mysqli_connect("localhost", "root", "", "db");  
      $output = '';  
      $allowed_ext = array("csv");  
      $tmp = explode(".", $_FILES["employee_file"]["name"]);
      $extension = end($tmp); 
      if(in_array($extension, $allowed_ext))  
      {  
           $file_data = fopen($_FILES["employee_file"]["tmp_name"], 'r');  
           fgetcsv($file_data);
           while($row = fgetcsv($file_data))  
           {
               $try = count($row);
               if($try === 6){             
                $id = mysqli_real_escape_string($connect, $row[0]);
                $name = mysqli_real_escape_string($connect, $row[1]);  
                $address = mysqli_real_escape_string($connect, $row[2]);  
                $gender = mysqli_real_escape_string($connect, $row[3]);  
                $designation = mysqli_real_escape_string($connect, $row[4]);  
                $age = mysqli_real_escape_string($connect, $row[5]);                
                $query = "INSERT INTO tbl_employee  
                     (id,name, address, gender, designation, age)  
                     VALUES ('$id','$name', '$address', '$gender', '$designation', '$age')";    
                mysqli_query($connect, $query);
               }else{
                   $status = false;
                   $error = 'Error3';
                   $output = [];
               }
            }
            $status = true;
            $error = [];
            $output = $output;  
      } else {
        $status = false;
        $error = "Error1";
        $output = [];
      }  
 } else {
    $status = false;
    $error = "Error2";
    $output = [];
 }

 header('Content-Type: application/json');
 echo json_encode(array('status'=>$status,'output'=>$output,'error'=>$error), JSON_PRETTY_PRINT);

 ?> 

对不起我的英语不好

【讨论】:

  • 是的,它是一个数组
  • 应该是 6 。
  • 只是更多地挖掘$row,我是否返回6,尝试使用$row fgetcsv($file_data); echo $row; exit()之前,以确保该值
  • 好吧@Ascaliko 这将是一个错误,因为 $row 在 while 内。
  • $row = fgetcsv($file_data); $status = false; $error = $row; $output = []; header('Content-Type: application/json'); echo json_encode(array('status'=&gt;$status,'output'=&gt;$output,'error'=&gt;$error), JSON_PRETTY_PRINT); 上方插入此语法
【解决方案3】:

使用console.log()测试你的数据,alert不能输出很多数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2017-09-29
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    相关资源
    最近更新 更多