2016-05-30 2 views
1

Недавно я обнаружил блог 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 вызывают проблему и просто не передают какие-либо данные. Любая помощь будет очень признательна, спасибо!

+0

вы только послать 'page' параметра в POST-запрос, я не могу увидеть параметр 'action' – messerbill

+0

Какой ответ' $ .ajax() 'callback запускает пост-вызов? 'success' или' error'? И в вашем обратном вызове 'success' вы используете следующее:' if (data == "ok") {'пока вы не отправляете обратно' ok' в ответ, так что условие никогда не будет удовлетворять. Но эта последняя часть не повлияет на то, вставлены ли данные в базу данных. Просто FYI – Marcus

+0

В запросе 'SELECT' в' ajax.php', откуда вы получаете '$ username'? Он установлен? Поскольку ваш 'INSERT' строго зависит от успешного выполнения' SELECT' и возвращает значение для '$ follow', вы должны действительно добавить ограничение сортировки на два. – Marcus

ответ

-1

попытка изменить в ajax.js

$(function(){ 
    $('#followbtn').on('click', function(e){ 
     e.preventDefault(); 
     $('#followbtn').fadeOut(300); 

     $.ajax({ 
      url: '../ajax-follow.php', 
      ... 

параметр URL-адрес для:

url: 'ajax-follow.php', 

Смотрите, если он будет работать таким образом

+0

Возможно, вы правы, но почему вы считаете, что файлы находятся в одном каталоге? –

+0

@JeffPuckettII вы правы, но я увидел другой 'url: 'ajax-follwer.php'' ниже и предположил, что файлы находятся в одной папке. Кнопка затухает, потому что функция вызывается перед запросом ajax и думает, что с URL-адресом что-то не так. Возможно, если использование инструментов разработчика браузера расскажет нам об этом – Bearnik

+0

my bad 'url: 'ajax-followers.php',' ... извините за ошибку – Bearnik