2015-06-27 91 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'; 
     }