前提・実現したいこと
いいね機能を実装したい。
いいねボタンを押したら画面遷移することなく、いいねの数値を変更したい。
発生している問題・エラーメッセージ
$_POSTの値をAjaxで実行するPHPで使いたいのですが、下のようにiframeを使って画面が遷移しないようにすると$_POSTの値が送れません。
またiframeを使わないと開いているPHPが再度読み込まれてしまうので、目的の動きにはなりません。
どうすれば画面遷移をさせずに$_POSTの値が送れるでしょうか?
該当のソースコード
PHP
1・・・ 2<form method="POST" target='fuga'> 3 <button id='likes<?php echo $row['id'] ?>'>いいねテスト</button> 4 <input type='hidden' name='post_id' value='<?php echo $row['id'] ?>'> 5 <input type='hidden' name='user_id' value='<?php echo $user_id ?>'> 6 <input type='hidden' name='switch' value='insert'> 7</form> 8<iframe name='fuga' src='' style='display:none;'></iframe> 9・・・
JavaScript
1$(function () { 2 $("[id^=likes]").click( 3 function(){ 4 var id = this.id; 5 $.ajax({ 6 url: 'likes_count.php', 7 data:{"id": id}, 8 type: 'POST', 9 cache: false, 10 dataType: 'json', 11 success: function(data){ 12 alert('成功'); 13 }, 14 error: function(){ 15 alert('error'); 16 } 17 }); 18 } 19 ); 20});
JavaScript
1//修正 2$(function () { 3 $("[id^=likes]").on('click', function(e){ 4 e.preventDefault(); 5 var formData = new FormData($('#example_form').get(0)); 6 var id = this.id; 7 id = id.replace("likes",""); 8 $.ajax({ 9 url: 'likes_count.php', 10 data:{ 11 "id": id, 12 formData 13 }, 14 type: 'POST', 15 cache: false, 16 dataType: 'json', 17 contentType: false, 18 processData: false, 19 success: function(data){ 20 alert('成功'); 21 }, 22 error: function(){ 23 alert('error'); 24 } 25 }); 26 }) 27});
回答3件
あなたの回答
tips
プレビュー