Недавно я обнаружил блог treehouse на ajax для новичков http://blog.teamtreehouse.com/beginners-guide-to-ajax-development-with-php Я искал сценарий следующего действия, и я зашел в тупик. В настоящее время кнопка кнопки исчезает, как и должно быть, но пока не сохраняются значения в базе данных.Ajax PHP Follow Script - ничего не хранится в базе данных
profile.php (кнопка следовать):
<div id="followbtncontainer" class="btncontainer"><a href="#" id="followbtn" class="bigblue">Follow</a></div>
ajax.js
$(function(){
$('#followbtn').on('click', function(e){
e.preventDefault();
$('#followbtn').fadeOut(300);
$.ajax({
url: '../ajax-follow.php',
type: 'post',
data: {'action': 'follow'},
success: function(data, status) {
if(data == "ok") {
$('#followbtncontainer').html('<p><em>Following!</em></p>');
var numfollowers = parseInt($('#followercnt').html()) + 1;
$('#followercnt').html(numfollowers);
}
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // end ajax call
});
$('body').on('click', '#morefllwrs', function(e){
e.preventDefault();
var container = $('#loadmorefollowers');
$(container).html('<img src="images/loader.gif">');
var newhtml = '';
$.ajax({
url: 'ajax-followers.php',
type: 'post',
data: {'page': $(this).attr('href')},
cache: false,
success: function(json) {
$.each(json, function(i, item) {
if(typeof item == 'object') {
newhtml += '<div class="user"> <a href="#" class="clearfix"> <img src="'+item.profile_pic+'" class="avi"> <h4>'+item.username+'</h4></a></div>';
}
else {
return false;
}
}) // end $.each() loop
if(json.nextpage != 'end') {
// if the nextpage is any other value other than end, we add the next page link
$(container).html('<a href="'+json.nextpage+'" id="morefllwrs" class="bigblue thinblue">Load more followers</a>');
} else {
$(container).html('<p></p>');
}
$('#followers').append(newhtml);
},
error: function(xhr, desc, err) {
console.log(xhr + "\n" + err);
}
}); // end ajax call
});
});
ajax.php
<?php require 'database.php' //<?php include 'session-check-index.php' ?>
<?php include 'authentication.php' ?>
<?php
session_start();
$follower=$_SESSION['id'];
$sql = "SELECT * FROM users WHERE username='$username'";
$result = mysqli_query($database,$sql);
$rws = mysqli_fetch_array($result);
$following=$rws['id'];
/**
* this script will auto-follow the user and update their followers count
* check out your POST data with var_dump($_POST)
**/
if($_POST['action'] == "follow") {
$sql=" INSERT INTO `user_follow` (`follower`, `following`, `subscribed`) VALUES ('$follower', '$following', CURRENT_TIMESTAMP);"
/**
* we can pass any action like block, follow, unfollow, send PM....
* if we get a 'follow' action then we could take the user ID and create a SQL command
* but with no database, we can simply assume the follow action has been completed and return 'ok'
**/
mysqli_query($database,$sql) or die(mysqli_error($database));
}
?>
Я не уверен, если фактический $ следующий и Значения $ follower вызывают проблему и просто не передают какие-либо данные. Любая помощь будет очень признательна, спасибо!
вы только послать 'page' параметра в POST-запрос, я не могу увидеть параметр 'action' – messerbill
Какой ответ' $ .ajax() 'callback запускает пост-вызов? 'success' или' error'? И в вашем обратном вызове 'success' вы используете следующее:' if (data == "ok") {'пока вы не отправляете обратно' ok' в ответ, так что условие никогда не будет удовлетворять. Но эта последняя часть не повлияет на то, вставлены ли данные в базу данных. Просто FYI – Marcus
В запросе 'SELECT' в' ajax.php', откуда вы получаете '$ username'? Он установлен? Поскольку ваш 'INSERT' строго зависит от успешного выполнения' SELECT' и возвращает значение для '$ follow', вы должны действительно добавить ограничение сортировки на два. – Marcus