私は AJax が嫌いになり始めています。jQuery を使用して投稿するときに、有用な情報を取得するのが非常に難しいと感じています。
ボタンがクリックされたときに情報を追加または削除するスクリプトがあります。jquery は、クラス内の関数を呼び出すファイルに投稿します。この部分は機能しますが、フロントエンドを操作するための成功メッセージが返ってきません。これが私のコードです。
PHP は機能しますが、JSON.parse: Google で検索した予期しない文字というエラーが表示され続けますが、json は問題ないように見えますか?
jQuery
$('.fave').click(function(){
var favId = $(this).attr('data-user-fave');
var params = {};
params['fave_id'] = favId;
params['fav_flag'] = '1';
$.post('index.php?link=my_applications', params, function(data){
var data = $.parseJSON(data);
if(data.message === 'success'){
alert(data.flag);
}
else{
alert("Fail");
}
});
jQuery が投稿するファイル内のコード
$profile = new profile();
if($_POST['fav_flag'] == '1'){
$js = $profile->fave_user();
echo json_encode($js);
}
クラス プロファイルの関数
function fave_user(){
$query = "SELECT * FROM `favourite` WHERE user_id = '{$_SESSION['loginArr']['user_id']}' AND fave_id = '{$_POST['fave_Id']}'";
$nr = $GLOBALS['DB']->num_rows($query);
if($nr >= 1){
//exists so remove
$query = "DELETE FROM `favourites` WHERE user_id = '{$_SESSION['loginArr']['user_id']}' AND fave_id='{$_POST['fave_Id']}'";
$GLOBALS['DB']->deleteQuery($query);
$return["message"]="success";
$return["flag"]="del";
return $return;
}
else{
//not a fave so add
$query = "INSERT INTO `favourite` (user_id, fave_id) VALUES ('{$_SESSION['loginArr']['user_id']}', '{$_POST['fave_id']}')";
$GLOBALS['DB']->insertQuery($query);
$return["message"]="success";
$return["flag"]="ins";
return $return;
}
}