2015-07-27 5 views
3

Задача: Запросить SQL без обновления страницы с помощью Ajax.Запрос SQL без обновления страницы с помощью Ajax

У меня есть/Не нравится кнопки, которые отлично функционируют как форма и представляют ввод, однако форма обновляет страницу.

У меня нет ни малейшего понятия, как сделать вызов Ajax, который соединяет мой «liker.php» (ниже), чтобы работать на моей главной странице с помощью кнопки или кнопки класса/id.

$.ajax({ 
    type: "POST", 
    url: "liker.php", 
    data: ??? 
    success: ??? 
    ............... 

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

liker.php:

//LIKE FIELD 
if (isset($_POST['like'.$id])) { 
    if (!in_array("$id", $like_explode)) { 
    if (!in_array("$id", $dislike_explode)) { 
     mysqli_query($db, "UPDATE likes SET pid_like=CONCAT(pid_like,',$id') WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE comments SET likes=(likes+1) WHERE id='$id'"); 
    } 
    else 
    { 
     $new_dislike_string = str_replace(",$id", '', $dislike_string); 
     mysqli_query($db, "UPDATE likes SET pid_dislike='$new_dislike_string' WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE likes SET pid_like=CONCAT(pid_like,',$id') WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE comments SET likes=(likes+1) WHERE id='$id'"); 
     mysqli_query($db, "UPDATE comments SET dislikes=(dislikes-1) WHERE id='$id'"); 
    } 
    } 
} 
//DISLIKE FIELD 
if (isset($_POST['dislike'.$id])) { 
    if (!in_array("$id", $dislike_explode)) { 
    if (!in_array("$id", $like_explode)) { 
     mysqli_query($db, "UPDATE likes SET pid_dislike=CONCAT(pid_dislike,',$id') WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE comments SET likes=(dislikes+1) WHERE id='$id'"); 
    } 
    else 
    { 
     $new_like_string = str_replace(",$id", '', $like_string); 
     mysqli_query($db, "UPDATE likes SET pid_like='$new_like_string' WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE likes SET pid_dislike=CONCAT(pid_dislike,',$id') WHERE user_id='$user_id'"); 
     mysqli_query($db, "UPDATE comments SET dislikes=(dislikes+1) WHERE id='$id'"); 
     mysqli_query($db, "UPDATE comments SET likes=(likes-1) WHERE id='$id'"); 
    } 
    } 
} 
//LIKE-DISLIKE FIELD END 
+0

сообщение фрагмент кода HTML pleaseeee –

+0

Я уверен, что вы можете найти много примеров через Google, это не так уж трудно. Данные будут идентификатором i.e, если это похоже или не нравится. Это можно сделать, как вы хотите. Использование bool, int или даже строки. Обратный вызов успеха будет состоять в том, что вы просто обновите количество симпатий/антипатий. – Script47

+0

Поскольку я не уверен, как использовать Ajax, я просто общаюсь с php следующим образом:

:( – Kei

ответ

0

Попробуйте что-то вроде этого:

$("#likeButtonID").click(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "liker.php", 
     data: { like: $(this).val(); }, 
     success: function(result) { 
      alert('Ajax Success Ran'); 
     } 
    }); 
}); 

Или если у вас есть много подобных кнопок на странице вы можете сделать петлю Jquery над каждым из них.

+0

Спасибо, я попробую – Kei

3

Я объясню вам, как использовать ajax с jquery. Я не понимаю, как это работает с переменными $ _POST, но я надеюсь, что вам помогут.

Сначала используйте класс, чтобы узнать, когда щелчок элемента нравится/не нравится. Во-вторых, используйте имя, чтобы узнать, нравится это или нет.

Пример как:

<a href="ID" class="classForLikeOrDislike" name="like">Like</span> 

Неприязнь:

<a href="ID" class="classForLikeOrDislike" name="dislike">Dislike</span> 

Эль Аякс

$(".classForLikeOrDislike").click(function(){ 

    // Get the varible ID, to send to your php 
    var id = $(this).attr('href'); 

    // Get the varible name, to send like or dislike 
    var l = $(this).attr('name'); 


    $.post({url: "liker.php", {id: id}, success: function(result){ 
     // do some code here 
     // here yo can see 'result' response of liker.php 
     // console.log(result); 
    }}); 

}); 

* Изменение Обновления диапазона теги на анкерной тег с HREF.

UPDATE в ответ «кликают» вопрос выше

переменная событие является то, что должно быть передано в ваши ваши анонимные функции.

<script> 
function chk(event) 
{ 
    // Prevent trigger submit and reload page 
    event.preventDefault(); 
    var name=document.getElementById('clicker'); 
    $.ajax({ 
      type:"post", 
      url: "clicky.php", 
      data: {clicker:1} , <--- here goes the data that you want to send to your php file, in this case SEND $_POST['clicker'] with value 1 
      cache: false, 
      success: <-- When is success your request, whats you want to make (other code) maybe print 'OK' 
    }); 
} 
</script> 


<?php 
    if(isset($_POST['clicker'])) 
    { 
     mysqli_query($db,"UPDATE items SET this='that' WHERE number='1'") 
    } 
?> 
+0

Я дам ему шанс! Спасибо! – Kei

+0

его a плохая практика использовать одно и то же имя для атрибута идентификатора. – Diwas

+0

Ваш правый @Diwas, моя ошибка. Позвольте мне его обновить. – vnponce

0

WebMethod давайте действовать в Ajax вызова, как в WebService, никакого ответа не обрабатываются, класс в формате JSON/XML формат является returing (или ничего, просто не выполнять действия на сервере)

ПАШ довольно легко, попробуйте это, если помогает PHP Equivalent to Authorized ASP.NET WebMethod (AJAX)?

приветы

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