Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt zamiast zwracać numer zwraca całą stronę jako kod.
designez
post 20.11.2018, 20:10:12
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 11.08.2012

Ostrzeżenie: (0%)
-----


Hej męcze się ze skryptem Like / Dislike z podmianką dynamiczną na nową wartość liczbową. Kiedyś rozwiązałem ten problem ale nie wiem dlaczego zamiast zwracać numer +1 to zwraca mi całą stronę jako kod.
Głosy są zaliczane ale coś jest skopane z odbieraniem ich.

Fragment odpowiedzialny za przyciski like and dislike
  1. <ul class="voting_wrapper" id="'.$result['id'].'">
  2. <li class="voting_btn">
  3. <a class="up_button"><i class="icon_like_alt"></i></a>
  4. <span class="up_votes">'.$result['glos_plus'].'</span>
  5. </li>
  6. <li class="voting_btn">
  7.  
  8. <a class="down_button"><i class="icon_dislike_alt"></i></a>
  9. <span class="down_votes">'.$result['glos_minus'].'</span>
  10.  
  11. </li>
  12. </ul>
  13.  


skrypt

  1. $(document).ready(function() {
  2.  
  3. $.each( $('.voting_wrapper'), function(){
  4. var unique_id = $(this).attr("id");
  5. postdata = {'opinia':'glosuj','unique_id':unique_id, 'vote':'fetch'};
  6. $.post('includes/ajax-reviews-votes.php', postdata, function(response) {
  7. $('#'+unique_id+' .up_votes').text(response.vote_up);
  8. $('#'+unique_id+' .down_votes').text(response.vote_down);
  9. },'json');
  10.  
  11. });
  12. $(".voting_wrapper .voting_btn").click(function (e) {
  13. var clicked_button = $(this).children().attr('class');
  14. var unique_id = $(this).parent().attr("id");
  15.  
  16. if(clicked_button==='down_button')
  17.  
  18. {
  19.  
  20. postdata = {'opinia':'glosuj','unique_id':unique_id, 'vote':'down'};
  21. $.post('includes/ajax-reviews-votes.php', postdata, function(data) {
  22. $('#'+unique_id+' .down_votes').text(data);
  23.  
  24. }).fail(function(err) {
  25.  
  26. });
  27.  
  28. }
  29.  
  30. else if(clicked_button==='up_button') //user liked the content
  31. {
  32.  
  33.  
  34. postdata = {'opinia':'glosuj', 'unique_id':unique_id, 'vote':'up'};
  35.  
  36. $.post('includes/ajax-reviews-votes.php', postdata, function(data) {
  37.  
  38. $('#'+unique_id+' .up_votes').text(data);
  39.  
  40. // alert("Thanks! For Liking This Content.");
  41. //AlertSukces('<i class ="fa fa-check-square-o" aria-hidden="true"></i> &nbsp; Dziękujemy za pozytywną opinię!');
  42.  
  43. }).fail(function(err) {
  44.  
  45. //alert(err.statusText);
  46. //AlertUwaga('<i class="fa fa-check-square-o" aria-hidden="true"></i> &nbsp; Głos został już wcześniej oddany!');
  47. //AlertInfo('<i class="fa fa-check-square-o" aria-hidden="true"></i> &nbsp; Głos nie został dodany!.');
  48. });
  49. }
  50. });
  51.  
  52. });
  53.  


Plik ajax-reviews-votes.php

  1.  
  2. switch ($user_vote_type)
  3.  
  4. {
  5. case 'up':
  6.  
  7.  
  8. $result = mysqli_query($sql_con,"SELECT glos_plus FROM reviews WHERE id='$unique_content_id' LIMIT 1");
  9. $get_total_rows = mysqli_fetch_assoc($result);
  10.  
  11.  
  12. if($get_total_rows)
  13. {
  14. mysqli_query($sql_con,"UPDATE reviews SET glos_plus = glos_plus+1 WHERE id='$unique_content_id'");
  15. }
  16.  
  17. echo ($get_total_rows["glos_plus"]+1); //display total liked votes
  18.  
  19.  
  20. break;
  21.  
  22.  
  23.  
  24. ##### User disliked the content #########
  25.  
  26. case 'down':
  27.  
  28.  
  29. $result = mysqli_query($sql_con,"SELECT glos_minus FROM reviews WHERE id='$unique_content_id' LIMIT 1");
  30. $get_total_rows = mysqli_fetch_assoc($result);
  31.  
  32.  
  33. if($get_total_rows)
  34. {
  35. mysqli_query($sql_con,"UPDATE reviews SET glos_minus=glos_minus+1 WHERE id='$unique_content_id'");
  36. }
  37.  
  38.  
  39.  
  40. if($get_total_rows) {
  41. echo ($get_total_rows_old["glos_minus"]+1); //display total liked votes
  42. }
  43.  
  44.  
  45. break;
  46. case 'fetch':
  47. $result = mysqli_query($sql_con,"SELECT glos_plus,glos_minus FROM reviews WHERE id ='$unique_content_id' LIMIT 1");
  48. $row = mysqli_fetch_assoc($result);
  49.  
  50. $vote_up = ($row["glos_plus"])?$row["glos_plus"]:0;
  51. $vote_down = ($row["glos_minus"])?$row["glos_minus"]:0;
  52. $send_response = array('glos_plus'=>$vote_up, 'glos_minus'=>$vote_down);
  53.  
  54. echo json_encode($send_response);
  55. break;
  56.  
  57.  
  58.  
  59. }
  60.  
  61.  










Ten post edytował designez 20.11.2018, 20:13:18
Go to the top of the page
+Quote Post
trueblue
post 20.11.2018, 20:16:08
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Widocznie gdzieś nie kończysz drukowania danych poprzez exit.

P.S. Te SELECTy nie są w ogóle potrzebne. Wiesz jaka jest aktualnie punktacja, bo ją wyświetlasz. Wystarczy, że od tej wyświetlanej odejmiesz lub dodasz 1, a po stronie PHP zrobisz tylko UPDATE. Zmianę wartości wyświetlanej możesz zrobić dla pewności po poprawnej zwrotce z Ajax (kiedy będziesz pewien, że UPDATE się powiódł).


--------------------
Go to the top of the page
+Quote Post
designez
post 20.11.2018, 20:24:10
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 11.08.2012

Ostrzeżenie: (0%)
-----


Ja tam nie chciałem podawać dokładnie plików i ta wersja jaka jest przedstawiona działa.
Nie chcę aby ktoś wszedł w plik js i tam widział jaki dokładnie plik odpowiada za like czy dodawanie ocen.
Oceny tą samą metodą działają ale te like coś nie pasuje. Wcześniej zamiast pliku ajax-reviews-votes.php był index.php a tam może przekombinowane ale przynajmniej wszystko przechodzi przez index.

  1. switch ($_POST['opinia']){ // tu będzie zabezpieczenie więc luzik z nagim POST jak na razie
  2. case 'dodaj':
  3. include 'includes/ajax-reviews.php';
  4. http_response_code(200);
  5. break;
  6. case 'glosuj':
  7. http_response_code(200);
  8. include 'includes/ajax-reviews-votes.php';
  9. break;
  10. }


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:59