2013-04-11 3 views
0

Я очень новичок в JavaScript, и я экспериментировал с основными функциями jQuery и ajax, теперь я пытаюсь создать кнопку «Like» или «Rep» для профилей на моем веб-сайте , Я написал довольно простой код, однако он не работает, так как он ничего не публикует, когда я нажимаю кнопку.Ajax/jQuery Кнопка «Like»

Вот мой JavaScript (я бы последний JQuery встраивать на моей странице):

<script> 
$(function(){ 
    $(".rep").on("click", function(){ 

    $.ajax({ 
     type: "POST", 
     url: "add.php", 
     data: ({ profile: $(".rep").attr('id') }), 
     success: function(data) { 
     if(data.status == 'success') { 
     $('.rep').html('N'); 
     } else { 
     $('.rep').html('N'); 
     } 
     } 
    }) 
    }); 
}); 
</script> 

Теперь мои HTML элементы:

<div class="rep" id="Username">O</div> 

И, наконец, мой PHP скрипт:

<?php 
include ("config.php"); 
$to = $_POST["profile"]; 
$from = $myUser; 
$ip = $_SERVER["REMOTE_ADDR"]; 
$date = date("M j, Y"); 

if($to !== "" && $from !==""){ 
    $q = mysql_query("SELECT * FROM rep WHERE to='$to' AND from='$from' AND date = '$date'"); 
    $n = mysql_num_rows($q); 

    if($n == 0){ 
     $query = mysql_query("INSERT INTO rep (to, from, ip, date) VALUES ('$to', '$from', '$ip', '$date')"); 
     if($query){ 
     $data['status'] = 'success'; 
     } else { 
     $data['status'] = 'error'; 
     } 
    } else if($n !== 0){ 
    $data['status'] = 'error'; 
    } 
} 

?> 

На самом деле я не могу обойти его достаточно, чтобы сделать эту работу, поэтому, если бы кто-то мог указать мне в правый и объяснив, что было не так, это было бы здорово!

+0

Не будет профиля: $ (". Rep"). Attr ('id') возвращает «Имя пользователя»? Попробуйте: $ (". Rep"). Html() – Jordan

+0

Предполагается вернуть имя пользователя, это то, что я хочу опубликовать. Я заполнил этот атрибут фактическим именем пользователя после завершения скрипта. – Engine

ответ

1

jQuery live() был удален из jQuery с версии 1.9.

http://api.jquery.com/live/

Try нажмите() или ('щелчок')

EDIT (это не проблема)

Файл PHP должен вернуть JSON-закодирован строку, которая выглядит например:

{name: 'bob', success: true, some_property: 'a string'} 

и т. д. для всех значений, которые вы хотите получить в возвращаемых данных.

я обычно это сделать:

$data['success'] = true; // not needed for jquery but if you want to check it 
$data['name'] = 'bob'; 

echo json_encode($data); 
exit; 

посмотреть, если это работает.

+0

Извините, я отправил старый код, я уже исправил это, и состояние элемента изменилось на «N», как хотелось бы, но он делает это для ошибки тоже atm (я положил «E», чтобы проверить, и это что) + запрос не добавляется в базу данных. – Engine

+0

обновил ответ - надеюсь, что это объяснит :) –

+0

Все еще не работает :(Спасибо за попытку, хотя – Engine

0

использовать этот формат

$(document).on("click", ".rep", function() { 

var id = $(this).attr('id'); 
    var s = { 
     "profile": d 
    }; 


    $.ajax({ 

     url: "add.php", 
     type: "POST", 
     data: s, 
     success: function (data) { 
      // but what you want 

     }, 

    }); 


    return false; 
}); 
+0

Все тот же результат – Engine

+0

like
<<<< > >>>, но в теге id профиль и его работа будут работать –

+0

Я уже исправил, что там, где вы помещаете идентификатор, а не ID, и он не работал , Я думаю, что это мой PHP. – Engine

0

Прежде всего, Ставить .html ('п'), чтобы .text ('п');

добавить в свой АЯКС функции

error: function (error) { 
        console.log(error); //or alert(error); 
       } 

, и вы получите ответ

+0

Я добавил это и ничего не получил в консоли JavaScript, это, конечно, до PHP. – Engine

+0

Итак, у вас нет ошибок) Возможно, используйте json_encode для $ data ['bla'] – Imp0ssible

+0

Пробовал это сейчас и все еще не работал, не получайте этого вообще. – Engine

0

Вам необходимо повторить из результата в файле PHP, поэтому Javascript получает правильный результат в параметре данных

+0

Уже используется mysql_error(), и он просто вернул "undefined" – Engine

Смежные вопросы