:このことにより
<form action="profile.php" method="GET">
: だからこれを変更しますか?探しているものはAJAXです。 は、私はあなたが答えを選択している知っているが、あなたがウェブ
- Ajax Introduction
に従うことができますいくつかの良いAJAXのチュートリアルをそれが長期
ザ・であなたを助けるかもしれない必要がある追加の情報があります
- What is Ajax ?
さらに多くのものをウェブ上で見つけることができます。
これは、uは何をする必要があるかである第一フォームメソッドがGET
であり、あなたのPHPスクリプトにあなたは$_POST
ので、これはundifined予告エラーが発生しますを要求している、changename
:予告:undifined変数changenameそうソリューションですあなたのフォームが$_GET
の場合は、1つのフォームで1つのメソッドを使用する場合は、$variable = $_GET['fieldname']
を使用します。サーバー側のフォームメソッドがPOST
の場合は、$variable = $_POST['fieldname'];
とは異なります。したがって、フォームメソッドをPOST
に変更してください。これがあなたがするべきことです。
編集。あなたはフロントエンド側で必要なものですPHP
更新
<script type="text/javascript">
$('document').ready(function(){
$('form').on('submit',function(event){
event.preventDefault();//prevent the form from reloading the page when submit
var formData = $('form').serialize(); // reading form input
$.ajax({
type :'POST',
data : formData,
url : 'profile.php',
dataType : 'json',
encode : true,
success : function(response){
//response = JSON.parse(response);
if(response == "ok"){
$('#success').html('profile updated success');
setTimeout(' window.location.href = "profile.php"; ', 6000); // redirecting
}else{
//could not update
$('#error').html(response);
}
},
error : function(e){
console.log(e); // debugging puporse only
}
});
});
});
</script>
は..あなたは、単一のページに複数のフォームを持っているならば、その後、$('form').on('submit',function(event){});
あなたを使用しないのでご注意ください各フォームにユニークなID
を付けて、jquery/ajaxのform
を、送信したいフォームのIDと置き換えます。
あなたのサーバー側。
私はあなたが私たちが戻ってクライアントにAJAXサーバに要求し、 を送信しているため、リダイレクトする だheader('location: profile.php');
を持っていることに気づいた、あなたはあなたの リダイレクトがクライアントを使用して、サーバー側でリダイレクトされません。あなたがサーバーから期待した応答 を受け取った後で私は上記のスクリプトで、クライアント側でリダイレクトする部分を の部分でコメントしました。あなたが必要とするすべてです
profile.php
<?php
$message = '';
if(isset($_POST['submit'])) {
require 'connect.php';
//validate your input field
$newname = $_POST['changename'];
$user_id = $_SESSION['temp_user'];
$sql = "UPDATE login SET login_name='$newname' WHERE user_id='$user_id'";
if(mysqli_query($conn, $sql)){
$message = 'ok'; // success
}else{
$message = 'system error could not update please try again later';
}
echo json_encode($message);//sending response back to the client
mysqli_close($conn);
}
?>
、あなたがそれらを使用する前に、両方のクライアント側とサーバー側ですべての入力フィールドを検証する必要があります注意してください。
mysqliまたはPDOを使用して準備された文について詳しく知りたい場合は、非常に使いやすく安全です。
$sql = "UPDATE login SET login_name='$newname' WHERE user_id='$user_id'";
は非常に安全ではありません。あなたの入力は検証されず、フィルタリングされずに消されます。
はそうプリペアドステートメントとその簡単なよう:
profile.phpが
<?php
$message = '';
if(isset($_POST['submit'])) {
require 'connect.php';
//validate your input field
$newname = $_POST['changename'];
$user_id = $_SESSION['temp_user'];
//prepare and bind
$sql = $conn->prepare("UPDATE login SET login_name= ? WHERE user_id= ? ");
$sql->bind_param("si",$newname,$user_id);
if($sql->execute()){
$message = 'ok';
}else{
$message = 'Error Could not update please try again later';
}
echo json_encode($message);
$conn->close();
}
?>
$sql->bind_param("si",$newname,$user_id);
を用意し、この関数は、SQLクエリにパラメータを結合し、どのようなパラメータをデータベースに伝えます。どのタイプのデータをmysqlに送信するかによって、SQLインジェクションのリスクが最小限に抑えられます。読むここhttp://api.jquery.com/jquery.ajax/ GoogleでAJAX`または `について
は – Ionut
AJAXは、あなたの答えです。検索するとガイドやチュートリアルが*たくさんあります。そしてあなたの質問のタイトルに叫ばないでください。私はあなたのために編集しました –
ボタンタイプ= "送信"を使用している場合、defenetlyあなたのページをリロードするので、ボタンタイプ= "ボタン"を使用し、さらなる操作のためにajaxを使用してください –