2017-08-29 8 views
0

ここで問題になっているのは、ページをリフレッシュするときにフォームが再送信されることです。今私は、私が上で述べた問題のためにオンラインでたくさんの答えがあることを知っています。しかし、私の問題では、フォームがリダイレクトされず、そのセクションだけが更新されるように、フォームを送信するためにajaxを使用しています。私はページをリダイレクトしたくないので、post/redirect/getメソッドを使うことはできません。AJAXでリロード時にフォームを再送信しないでください。警告:ヘッダーを変更できません。FIX

これは私のコードです:

HTML:

<form method="post" onsubmit="return submitdata();"> 
    <textarea maxlength="3000" id="profile-post" name="profile-post" placeholder="Write a post..." rows="3" cols="65" required></textarea> 
    <input type="submit" value="Post"> 
</form> 

スクリプト:

function submitdata() 
     { 
     var post=document.getElementById("profile-post"); 

     $.ajax({ 
      type: 'post', 
      url: 'page.php', 
      data: { 
      post:post 
      } 
     }) 
     }; 

はPHP:

if(isset($_POST['profile-post'])){ 
    $post = $_POST['profile-post']; 
    mysqli_query($dbc,"INSERT INTO make_post (post, time, date, user_id) VALUES ('$post', CURTIME(), CURDATE(), '$id_profile')"); 
    } 

}

オンラインでの検索で見つけられない、希望の結果を得ることができる他の方法はありますか?

ありがとうございました。

+0

'type =" submit "を' type = "button" ' – JYoThI

+0

^に変更し、' submitdata() '呼び出しをそのボタンのonclickアクションに移動するか、フォームをハイジャックして送信時にfalseを返すようにします。 – CD001

+1

私はそれを得ることはありません、問題は何ですか?私はこのページをどのように再読み込みするとフォームを(再)提出するのかわかりません。 – jeroen

答えて

0

フォームに必要なものをjqueryで取り込み、ajaxを使ってPHPページに送信し、データベースにクエリしてから、それを動的にテーブルなどに挿入します。 コードまたは説明の大部分が欠落しています。これは私が与えることができる最大です。

<form method="post"> 
    <textarea maxlength="3000" id="profile-post" name="profile-post" placeholder="Write a post..." rows="3" cols="65" required></textarea> 
    <button type="button" value="Post"> 
</form> 

$(document).ready(function(e){ 

    var post = $('#profile-post').val(); 
$.ajax({ 
        type:"POST" , 
        data :{ 
         'type' : 'post', 
         'id': id, 
         'post' : post 
        }, 
        url : '../allforms.php' //Php page to send data 
        }).success(function(data){ 
         $('#profile-post').val(''); 
         //Write code of whatever you want to load dynamically 
           without loading 
        }); 

}); 
} 

私はフォームが送信された後に私のPHPファイル内

header('location:page.php'); 

を追加することによってこの問題を解決することができた、より明確に

+0

私はあなたの答えを得られませんでした。謝罪いたします。私のコードの条項を親切に説明したり、このアイデアを理解するためのリンクを教えてください。ありがとうございました。 –

+0

私はいくつかの時間を与えてくれるでしょう。適切な答えであなたに戻ってきます –

+0

フォームが他のページにリダイレクトされておらず、部門のみが更新されているので、フォームをAjaxで送信します。ここでページを更新すると、フォームが再送信されます。フォームを更新して再送信する必要はありません。私はあなたに明確に説明できることを願っています。 –

0

をご希望の結果を説明してください。 これはpage.phpにリダイレクトされると思っていました。リロードして回避したいので、ajaxを使いました。しかし、その行を追加してもページ全体がリロードされるわけではありません。 私は自分の時間を取って私の質問に答えてくれたことにとても感謝しています。 また、私は 警告したヘッダを使用しているときにエラーを得ていた:ヘッダー情報を変更することはできません - すでに.. により送信されたヘッダを、それが

<?php ob.start();?> 

と、ファイルの先頭を追加することで修正されました。

これは、同様の問題を抱えている人を助けてくれることを願っています。ありがとう。

関連する問題