WedX - журнал о программировании и компьютерных науках

либо ajax, либо php не работает, но не могу понять, где

у меня возникли проблемы с некоторым скриптом на моем сайте. я следил за частью руководства, так как мне понравилось, что друг добавил часть, но не хотел менять весь сайт. я использовал его код, но, очевидно, мне пришлось кое-что изменить, чтобы он работал на моем сайте. идея в том, что вы посещаете чей-то профиль и можете щелкнуть, чтобы заблокировать или отправить запрос на добавление в друзья.

я не уверен, где проблема. я не вижу ничего плохого в php, но, возможно, я что-то там упускаю, так как я не эксперт, я еще меньше эксперт в javascript/ajax, так что это заставляет меня поверить, что я что-то сломал в этом.

вот мои коды.

    //Script on the profile.php page

    function friendToggle(type,user,elem){
var conf = confirm("Press OK to confirm the '"+type+"' action for user <?php echo $username; ?>.");
if(conf != true){
    return false;
}
_(elem).innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "friend_system.php");
ajax.onreadystatechange = function() {
    if(ajaxReturn(ajax) == true) {
        if(ajax.responseText == "friend_request_sent"){
            _(elem).innerHTML = 'OK Friend Request Sent';
        } else if(ajax.responseText == "unfriend_ok"){
            _(elem).innerHTML = '<button onclick="friendToggle(\'friend\',\'<?php echo $id; ?>\',\'friendBtn\')">Request As Friend</button>';
        } else {
            alert(ajax.responseText);
            _(elem).innerHTML = 'Try again later';
        }
    }
}
ajax.send("type="+type+"&id="+id);
    }


    //php script for the friend_system.php page

    <?php
    include_once("scripts/checkuserlog.php");

     ?>
   <?php
   if (isset($_POST['type']) && isset($_POST['id'])){
$id = preg_replace('#[^a-z0-9]#i', '', $_POST['id']);
$sql = "SELECT COUNT(id) FROM myMembers WHERE id='$id' AND activated='1' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$exist_count = mysqli_fetch_row($query);
if($exist_count[0] < 1){
    mysqli_close($db_conx);
    echo "$username does not exist.";
    exit();
}
if($_POST['type'] == "friend"){
    $sql = "SELECT COUNT(id) FROM blockedusers WHERE blocker='$id' AND blockee='$logOptions_id' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $blockcount1 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM blockedusers WHERE blocker='$logOptions_id' AND blockee='$id' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $blockcount2 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$logOptions_id' AND user2='$id' AND accepted='1' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count1 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$id' AND user2='$logOptions_id' AND accepted='1' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count2 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$logOptions_id' AND user2='$id' AND accepted='0' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count3 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$id' AND user2='$logOptions_id' AND accepted='0' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count4 = mysqli_fetch_row($query);
    if($blockcount1[0] > 0){
        mysqli_close($db_conx);
        echo "$user has you blocked, we cannot proceed.";
        exit();
    } else if($blockcount2[0] > 0){
        mysqli_close($db_conx);
        echo "You must first unblock $user in order to friend with them.";
        exit();
    } else if ($row_count1[0] > 0 || $row_count2[0] > 0) {
        mysqli_close($db_conx);
        echo "You are already friends with $user.";
        exit();
    } else if ($row_count3[0] > 0) {
        mysqli_close($db_conx);
        echo "You have a pending friend request already sent to $user.";
        exit();
    } else if ($row_count4[0] > 0) {
        mysqli_close($db_conx);
        echo "$user has requested to friend with you first. Check your friend requests.";
        exit();
    } else {
        $sql = "INSERT INTO friends(user1, user2, datemade) VALUES('$logOptions_id','$id',now())";
        $query = mysqli_query($db_conx, $sql);
        mysqli_close($db_conx);
        echo "friend_request_sent";
        exit();
    }
} else if($_POST['type'] == "unfriend"){
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$logOptions_id' AND user2='$id' AND accepted='1' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count1 = mysqli_fetch_row($query);
    $sql = "SELECT COUNT(id) FROM friends WHERE user1='$id' AND user2='$logOptions_id' AND accepted='1' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row_count2 = mysqli_fetch_row($query);
    if ($row_count1[0] > 0) {
        $sql = "DELETE FROM friends WHERE user1='$logOptions_id' AND user2='$id' AND accepted='1' LIMIT 1";
        $query = mysqli_query($db_conx, $sql);
        mysqli_close($db_conx);
        echo "unfriend_ok";
        exit();
    } else if ($row_count2[0] > 0) {
        $sql = "DELETE FROM friends WHERE user1='$id' AND user2='$logOptions_id' AND accepted='1' LIMIT 1";
        $query = mysqli_query($db_conx, $sql);
        mysqli_close($db_conx);
        echo "unfriend_ok";
        exit();
    } else {
        mysqli_close($db_conx);
        echo "No friendship could be found between your account and $user, therefore we cannot unfriend you.";
        exit();
    }
}
   }
   ?>

Я смотрю на него уже пару дней и начинаю не видеть леса за деревьями.

Когда я нажимаю кнопку запроса как дьявола, я получаю диалоговое окно в порядке, нажимаю «ОК», а затем он заменяет кнопку «пожалуйста, подождите ...», но на этом она останавливается. Я проверил, и в базу данных ничего не добавляется.

любая помощь, которую вы могли бы предложить, будет высоко оценена.

Спасибо

12.09.2013

  • Есть ли ошибки JavaScript в консоли? Сценарий AJAX запускается непосредственно в браузере? 12.09.2013
  • Вы не используете какой-либо jQuery, который я вижу.... 12.09.2013
  • запустите файл php самостоятельно с URL-адреса и посмотрите, что он возвращает. если он возвращает ожидаемый результат, вы знаете, что это javascript 12.09.2013
  • Вам нужен некоторый опыт использования jQuery/AJAX. Взгляните на эту запись SO и поэкспериментируйте с простыми примерами внизу. 12.09.2013

Ответы:


1

Я привел пример использования jQuery, чтобы сделать это просто.

Вот как будут выглядеть ваша кнопка и поле ответа.

    <div id="responsemessage<?php ///YOU USER ID FROM PHP// ?>" style="padding:2px; display:none;"></div>

<input name="" type="button" value="Friend Me" onClick="friendToggle('friend','<?php ///YOU USER ID FROM PHP// ?>')"/>
<input name="" type="button" value="Block Me" onClick="friendToggle('block','<?php ///YOU USER ID FROM PHP// ?>')"/>

Вот как будет выглядеть ваша функция jQuery. Вам нужно будет включить библиотеку jQuery в свой заголовок.

<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>


<script>function friendToggle(type,user){


///This is the ajax request via jQuery///
 $.ajax({
  url: 'friend_system.php?action='+type+'&user='+user,
  success: function(data) {
  ///This is where the response from you php is handled. Sky's the limit//
    if(data == 'good'){
        $("#responsemessage"+user).html('You now have a friend.');
    }else{
    $("#responsemessage"+user).html(data);
    }

  }});



}</script>

</head>

And here is the php to process the requests this would be in your friend_system.php

<?php
include('YOUR CONNECTION DETAILS FILE');
$act = $_REQUEST['action'];

if($act == 'friend'){

$a = mysql_query("SELECT * FROM friends WHERE user1 = '".$_REQUEST['user']."'");

if(mysql_num_rows($a) > 0){
echo 'You are already friends.';
}else{
mysql_query("INSERT INTO friends SET user1 = '".$_REQUEST['user']."', user2 = '', datemade = '".date('d-m-Y H:i')."'");
echo 'good';
}

}

if($act == 'block'){

mysql_query("INSERT INTO blockedusers  SET blocker='YOUR ID HERE, HOPE ITS PASSED VIA SESSION' AND blockee='".$_REQUEST['user']."'");

echo 'You have blocked this user.';

}


?>

Я надеюсь, что это поможет вам... Также обязательно посетите https://jquery.com/

12.09.2013
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]