2016-03-11 35 views
3

嗨,我想更新數據庫中的數據從一個窗體在同一頁面上的PHP代碼沒有重定向/重新加載頁面。PHP窗體停留在同一頁

我想這個教程,但沒有奏效:http://www.formget.com/form-submit-without-page-refreshing-jquery-php/

更新代碼:

<?php 
include "db.php"; 
session_start(); 
$value=$_POST['name']; 
$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'"); 
?> 

Profilecomplete.js:

$(document).ready(function() { 
    $("#submit").click(function() { 
     var name = $("#name").val(); 
     if (name == '') { 
      alert("Insertion Failed Some Fields are Blank....!!"); 
     } else { 
     // Returns successful data submission message when the entered information is stored in database. 
      $.post("config/profilecomplete.php", { 
       value: name 
      }, function(data) { 
       alert(data); 
       $('#form')[0].reset(); // To reset form fields 
      }); 
     } 
    }); 
}); 

形式:

<form method="POST" id="form"> 
    <div class="input-field col s6"> 
     <input id="name" type="text" class="validate"> 
     <label for="name">Value</label> 
    </div> 
    <button type="submit" id="submit" class="btn-flat">Update</button> 
</form> 
+0

你有這樣的例子/教程嗎? –

+0

你能用更多的代碼來編輯你的問題嗎?我沒有閱讀教程,但我認爲有一些形式的jQuery Ajax正在使用,並且我相信我並不是唯一希望遵循整個教程來回答你的問題的人。 – Lewis

+1

編輯帖子 –

回答

0

使用它,它已經工作。

的index.php

<form method="post"> 
    <input type="text" id="name"> 
    <input type="submit" id="submit"> 
</form> 

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    $("#submit").click(function(e) { 
     e.preventDefault(); 
     var nameInput = $("#name").val(); 
     var name = { 
      'name' : nameInput 
     } 
     if (nameInput == '') { 
      alert("Insertion Failed Some Fields are Blank....!!"); 
     } else { 
      // Returns successful data submission message when the entered information is stored in database. 
      $.post("config/profilecomplete.php", {value: name}, function(data) { 
       alert(data); 
       //$('#form')[0].reset(); // To reset form fields 
      }); 
     } 
    }); 
}); 
</script> 

profilecomplete.php

<?php 

$_POST = array_shift($_POST); // array_shift is very important, it lets you use the posted data. 

echo $_POST['name']; 


?> 

如果你想有一個更簡單的方法。

嘗試使用$.ajax()

+0

如何從此獲得$ _POST ['name']? –

+0

''name':nameInput //此處的名稱' – yul757

+0

這可以工作,但會彈出一個錯誤消息。有任何解決這個問題的方法嗎? http://i.imgur.com/PFPpLTz。(第#27行:'$ value = $ _ POST ['name'];' –

0

即使您未阻止表單提交按鈕的默認行爲,您的點擊事件如何發生。將提交輸入作爲按鈕或使用event.preventDefault()通過ajax提交表單。

<?php 
include "db.php"; 
session_start(); 

if(isset($_POST)) { 
    $value=$_POST['name']; 
    $query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='{$_SESSION['user']}'"); 
    echo ($query) ? "Updated" : "Not Updated"; 
    exit; 
} else { 
?> 
<form method="POST" id="form"> 
    <div class="input-field col s6"> 
     <input id="name" type="text" class="validate" name="name"> 
     <label for="name">Value</label> 
    </div> 
    <button type="button" id="submit" class="btn-flat">Update</button> 
</form> 
<?php } ?> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#submit").click(function() { 
     var name = $("#name").val(); 
     if (name === '') { 
      alert("Insertion Failed Some Fields are Blank....!!"); 
     } else { 
      // Returns successful data submission message when the entered information is stored in database. 
      $.post("config/profilecomplete.php", {name: name}, function(data) { 
       alert(data); 
       $('form')[0].reset(); // To reset form fields 
      }); 
     } 
    }); 
}); 
</script> 
+0

這給了我'注意:未定義索引:名稱並且只顯示'Updated' –

+0

更新了我的答案。將{value:name}更改爲{name:name} –

0

看起來這個問題或至少是其中一個問題就在這一行;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'"); 

您正在打開和關閉單引號兩次,這裏

​​

嘗試使用這個代替;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='" . $_SESSION["user"] . "'");