2015-06-27 72 views
2

今天遇到了一个奇怪的问题。所以我试图使用AJAX将数据插入到数据库中,这样页面就不需要重新加载以查看更改。但是,当我尝试插入数据,不知道如何把它,insert.php文件不会得到“触发”,例如行“你好Im插入.php”不显示。但是,Ajax代码工作正常,成功块被触发。PHP文件未使用jQuery/AJAX触发

形式:

<form action="insert.php" method="post" class="form-inline" id="forma"> 
    <input type="text" class="form-control" name="inputName" id="inputName" placeholder="Name"> 
    <input type="text" class="form-control" name="inputPrice" id="inputPrice" placeholder="Price"> 
    <input type="text" class="form-control" name="inputStore" id="inputStore" placeholder="Store"> 
    <input type="text" class="form-control" name="inputDate" id="inputDate" placeholder="Date"></br> 
    <button id="submit" type="submit" class="btn btn-success">Submit</button> 
</form> 

的jQuery:

$('#forma').submit(function() { 
    var name = $("#inputName").val(); 
    var price = $("#inputPrice").val(); 
    var store= $("#inputStore").val(); 
    var date = $("#inputDate").val(); 

    $.ajax({ 
     type: "POST", 
     url: "insert.php", 
     data: { 
      inputPavadinimas: name, 
      inputKaina: price, 
      inputParduotuve: store, 
      inputData: date, 
     }, 
     success: function() { 
      $("#success").show(); 
      alert('success'); 
     }, 
     error: function(){ 
      alert('error'); 
     } 
    }); 
    return false;  
}); 

insert.php:

<?php 
    error_reporting(0); 
    require 'db/connection.php'; 

    echo 'Hello Im insert.php'; 

    if(!empty($_POST)){ 
     print_r($_POST); 
     if(isset($_POST['inputName'],$_POST['inputPrice'],$_POST['inputStore'],$_POST['inputDate'])){ 
     $name = trim($_POST['inputName']); 
     $price = trim($_POST['inputPrice']); 
     $store = trim($_POST['inputStore']); 
     $date = trim($_POST['inputDate']); 

     if(!empty($name) && !empty($price) && !empty($store) && !empty($date)){ 
      $insert = $db->prepare("INSERT INTO prekes(name, price, store, date) VALUES (?, ?, ?, ?)"); 
      $insert->bind_param('ssss',$name, $price, $store, $date); 

      if($insert->execute()){ 
       echo 'INSERTED'; 
      } 
     } 
    } 
}; 
+0

或者记录不被插入或仅回声值不打印?哪一个是你的问题? –

+0

您的isset语句不会评估为真,因为您没有传递这些参数 – billyonecan

+0

这个字符是什么'};'insert.php的最后一行。这是PHP的有效字符? – Baron

回答

2

要改变PHP脚本回显中的数据,您需要像这样更改成功功能。如果请求成功被称为功能(任何数据,字符串textStatus,jqXHR jqXHR) 的函数:

success: function(data) { 
     $("#success").show(); 
     alert(data); 
    }, 

成功 类型。该函数传递三个参数:从服务器返回的数据,根据dataType参数或dataFilter回调函数格式化(如果指定);描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象中。从jQuery 1.5开始,成功设置可以接受一系列函数。每个函数都会依次调用。这是一个Ajax事件。

在这里,你可以找到关于jQuery.ajax()

0

更多信息,它可能是这一行:

error_reporting(0) 

这一行造成任何致命错误,停止脚本,但页面会 返回空响应状态代码为200(OK),这将导致ajax触发成功事件,即使在服务器端发生严重错误

1

尝试

$('#forma').submit(function(event) { 
    var name = $("#inputName").val(); 
    var price = $("#inputPrice").val(); 
    var store= $("#inputStore").val(); 
    var date = $("#inputDate").val(); 

    $.ajax({ 
     type: "POST", 
     url: "insert.php", 
     data: { 
      inputPavadinimas: name, 
      inputKaina: price, 
      inputParduotuve: store, 
      inputData: date, 
     }, 
     success: function(data) { 
      $("#success").html(data); 
      $("#success").show(); 
      alert(data); 
     }, 
     error: function(data){ 
      alert('error'); 
     } 
    }); 
    event.preventDefault(); 
}); 

加入$("#success").html(data);,成功的客户端不相同与insert.php

成功并改变这部分(insert.php):

 if(!empty($name) && !empty($price) && !empty($store) && !empty($date)){ 
      $insert = $db->prepare("INSERT INTO prekes(name, price, store, date) VALUES (?, ?, ?, ?)"); 
      $insert->bind_param('ssss',$name, $price, $store, $date); 

      if($insert->execute()){ 
       echo 'INSERTED'; 
      }else{ 
       echo 'SOMETHING WRONG'; 
      } 
     }else{ 
      echo 'ALL DATA CAN'T EMPTY'; 
     }