Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX]Bład z przesyłem danych
Sklep102
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Cześć,

  1.  
  2. <script>
  3. var raitings = 0;
  4. $(function () {
  5. $(".ratings").starrr().on("starrr:change", function (event, value){
  6. //alert (value);
  7. raitings = value;
  8. });
  9. });
  10.  
  11.  
  12. function saveRating(form){
  13. var film_id = form.new_id.value;
  14.  
  15. $.ajax({
  16. url:'modules/script/query/rating.php'
  17. type: 'POST',
  18. data: {
  19. 'new_id': new_id,
  20. 'raitings': raitings
  21. }
  22. succes: function(response){
  23. alert(response);
  24. },
  25. });
  26.  
  27.  
  28. return false;
  29. }
  30.  
  31.  
  32.  
  33.  
  34. </script>

Czy może mi ktoś wytłumaczyć co jest źle w próbie przesłania danych?
Jeśli usunę $.ajax to wszytskie elementy strony wyśiwetlają się poprawnie jeśli dodam $.ajax przestaje prawidło działać. Może ktoś mi wyjaśnić gdzie jest błąd?

Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zajrzyj do konsoli przegladarki a zobaczysz BLAD ktory to wszystko powoduje


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Dzięki!

Nie chce zakładać osobnego tematu to spytam tutaj:

  1. <script>
  2. var ratings = 0;
  3. $(function () {
  4. $(".ratings").starrr().on("starrr:change", function (event, value){
  5.  
  6. ratings = value;
  7. alert (ratings);
  8.  
  9. var i = document.createElement("INPUT");
  10. i.setAttribute("name","star");
  11. i.setAttribute("type","hidden");
  12. i.setAttribute("value",ratings);
  13. i.setAttribute("id", 3);
  14. $("#divstr").append(i)
  15.  
  16. });
  17.  
  18.  
  19. });
  20.  
  21.  
  22.  
  23.  
  24.  
  25. </script>


Dlaczego alert działa poprawnie ale nie tworzy się input?
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A dlaczego skoro korzystasz z jquery to nie zrobisz tego jak trzeba?

Cytat
let i = $('<input/>', {
id: 3,
value: ratings //itd...
});


Ten post edytował viking 17.03.2020, 14:46:04


--------------------
Go to the top of the page
+Quote Post
Sklep102
post
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Cytat(viking @ 17.03.2020, 14:43:53 ) *
A dlaczego skoro korzystasz z jquery to nie zrobisz tego jak trzeba?


  1. <script>
  2. var ratings = 0;
  3. $(function () {
  4. $(".ratings").starrr().on("starrr:change", function (event, value){
  5.  
  6. ratings = value;
  7. //alert (ratings);
  8.  
  9. let i = $('<input/>', {
  10. id: 3,
  11. value: ratings
  12. });
  13.  
  14.  
  15. });
  16.  
  17.  
  18.  
  19. });
  20.  
  21. </script>


Hmmm, dalej coś źle robię... Dalej wyświetla mi się tylko alert i nie tworzy inputa :/ konsola też pusta.

Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zapomniales dodac nowo utworzony input tam gdzie chcesz by byl...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


  1. let i = $('<input/>', {
  2. id: 3,
  3. value: ratings,
  4. name: test
  5. }).appendTo('form1');


<form action="modules/upload.php" id="myForm" method="post" enctype="multipart/form-data" name="form1">

Zły kod...
Poprawiłem ale dalej ten sam problem :/
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




raz ze twoj form ma ID id="myForm"
dwa ze nie powiedziales ze laczysz z ID
appendTo('#myForm');


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #9





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Dzięki!
nie wiedziałem że jeśli odnoszę się do id to trzeba użyć "#"
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To sa podstawy selektorow CSS. Poczytaj o nich bo nie raz bedzie ci potrzebne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #11





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Pozwolę sobie zadać jeszcze jedno pytanie odnośnie ajaxa

mam diva który pobiera wartość za pomocą php chciałbym to zamienić na ajaxa

<div class='db_ratings' data-rating="<?php echo $rating_db; ?>"></div>

  1. $.ajax({
  2. url:'modules/test.php',
  3. type: 'POST',
  4. data: {
  5. "film_id": film_id
  6. },
  7.  
  8.  
  9. success: function( data ) {
  10. $('#db_ratings').replaceWith($('#db_ratings').html(data));
  11. $('#db_ratings').html(data);
  12.  
  13. }
  14.  
  15.  
  16. });


i w odpowiedzi dostaję id i chciałbym to id przypisać do diva w miejsce php, siedzę nad tym kilka godzin ale nadal nie udało mi się tego przypisać :/


Swoją drogą w jakim celu używa się json? skoro można zrobić echo w pliku i dostać odpowiedz zaraz po wysłaniu danych?

  1. <?php
  2.  
  3. include "../db/connection.php";
  4.  
  5. $id = $_POST["film_id"];
  6.  
  7. $result = $pdo->prepare("SELECT * FROM `films` WHERE id = '$id'");
  8. $result->execute();
  9. foreach($result as $wat)
  10.  
  11. $myObj = $wat['rating'];
  12.  
  13.  
  14.  
  15. $myJSON = json_encode($myObj);
  16.  
  17. echo $myObj;
  18. ?>
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Dla jednej danej odczytywanej w ten sposób wielkiej różnicy nie robi ale dla całych tablic przetwarzanych w Angularze/Vue/React już tak. Do tego brak u ciebie odpowiednich nagłówków odpowiedzi. W twoim kodzie nie ma id #db_ratings tylko klasa .db_ratings

Ten post edytował viking 18.03.2020, 08:13:24


--------------------
Go to the top of the page
+Quote Post
Sklep102
post
Post #13





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


zrobiłem to tak:

  1. success: function( data ) {
  2. var id = data;
  3. $('.db_ratings').attr("data-rating",id)
  4. }


mam jeszcze 1 problem

  1. <script>
  2. var ratings = 0;
  3. $(function () {
  4. $(".ratings").starrr().on("starrr:change", function (event, value){
  5. //alert (value);
  6. ratings = value;
  7. });
  8.  
  9.  
  10. });
  11.  
  12.  
  13. function saveRating(form){
  14. var film_id = form.new_id.value;
  15.  
  16. $.ajax({
  17. url:'modules/script/query/ratings.php',
  18. type: 'POST',
  19. data: {
  20. "film_id": film_id,
  21. "ratings": ratings
  22. },
  23. succes: function(response){
  24. alert(response);
  25. }
  26. });
  27.  
  28.  
  29.  
  30.  
  31. var film_id = document.getElementById("new_id").value;
  32.  
  33. $.ajax({
  34. url:'modules/test.php',
  35. type: 'POST',
  36. data: {
  37. "film_id": film_id
  38. },
  39.  
  40.  
  41. success: function( data ) {
  42. var id = data;
  43. $('.db_ratings').attr("data-rating",id)
  44. }
  45.  
  46.  
  47. });
  48.  
  49. setInterval(function(){
  50. var db_ratings = document.getElementsByClassName("db_ratings")
  51. for (var a = 0; a < db_ratings.length; a++){
  52. $(db_ratings[a]).starrr({
  53. readOnly: true,
  54. rating: db_ratings[a].getAttribute("data-rating")
  55. })
  56. }
  57.  
  58. }, 3000);
  59.  
  60. return false;
  61.  
  62. }

Chodzi o funkcje

  1. setInterval(function(){
  2. var db_ratings = document.getElementsByClassName("db_ratings")
  3. for (var a = 0; a < db_ratings.length; a++){
  4. $(db_ratings[a]).starrr({
  5. readOnly: true,
  6. rating: db_ratings[a].getAttribute("data-rating")
  7. })
  8. }
  9.  
  10. }, 3000);


funkcja ma wyświetlić diva w którym są gwiazdki i są zaznaczane z poziomu skryptu po otrzymaniu id pytanie dlaczego po kliknięciu zapisu raz jeszcze funkcja przestaje działać? jak to ewentualnie poprawić?
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Napisz mi prosze co robi setInterval() a nastepnie napisz czemu to uzyles tutaj


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #15





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


opóźnia skrypt o 3000 milisekund zrobiłem to tak ponieważ bez tego skrypt wcale się nie wykonywał, ponieważ zanim przyszła odpowiedź z ajaxa to skrypt został już wykonany i takie rozwiązanie przyszło mi do głowy. Mimo że czekam 1 min to nic się nie zmienia. A chciałbym aby po zmianie wartości skrypt znów się wykonał.
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie, nie opoznia skryptu. Zajrzyj laskawie do dokumetnacji i doczytaj co to tak naprawde robi a nie strzelasz na pale.

Cytat
ponieważ zanim przyszła odpowiedź z ajaxa to skrypt został już wykonany

Piszesz kod i w ogole nie ogarniasz co piszesz. Ot losowo strzelasz w klawiature palcami...
Przeciez masz juz
success: function( data ) {

tak, wlasnie kod w SUCCESS wykonuje sie gdy ajax sie skonczy. Wlasnie tam masz wlozyc wszystko co ma sie wykonac gdy AJAX sie skonczy pomyslnie. Nie potrzebujesz do tego zadnych pseudo opozniaczy kodu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #17





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


Poprawiłem tak jak napisałeś. Niestety dalej nie działa tak jak trzeba tzn raz wyświetli i później się nic nie dzieje mimo że zmieniła się 3 np na 5
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Pokaz kod po zmianach
2) Czemu w saveRating masz dwa ajax?
3) gdzie masz przypisanie cos odnosnie klikania i wywolywania saveRating. Nie widze tego tutaj
4) Czemu w saveRating za kazdym razem inicjujesz star na divie db_ratings ? To teraz wyglada jakbys nadpisywal ciagle tego samego diva co juz samo w sobie jest zle i raczej nic dziwnego ze za kolejnym razem wszystko przestaje dzialac.


Moze pokac calosc, a nie wyrwane z kontekstu kawalki i napisz co chcesz docelowo osiagnac bo na chwile obecna to te twoje kombinowanie wyglada tak samo jak bez sensu kombinowales z setInterval nie wiedzac co to tak naprawde robi


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sklep102
post
Post #19





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.12.2019

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


  1. <form method="POST" onsubmit="return saveRating(this);">
  2. <script src="modules/script/starrr.js"></script>
  3. <div id="<?php echo $new_id; ?>" class='db_ratings' data-rating=""></div>
  4.  
  5. Ocena Filmu
  6. <input type="hidden" id="new_id" value="<?php echo $new_id; ?>">
  7.  
  8. <br>
  9. <div id="<?php echo $new_id; ?>" class='ratings'></div><br><!--- gwiazdki na dole strony --->
  10. <input type="submit" value="Zmień ocenę">
  11.  
  12.  
  13. </form>
  14.  
  15. <!--- skrypt odpowiedzialny za aktualizację oceny --->
  16. <script>
  17. var ratings = 0;
  18. $(function () {
  19. $(".ratings").starrr().on("starrr:change", function (event, value){
  20. //alert (value);
  21. ratings = value;
  22. });
  23.  
  24.  
  25. });
  26.  
  27.  
  28. function saveRating(form){
  29. var film_id = form.new_id.value;
  30.  
  31. $.ajax({
  32. url:'modules/script/query/ratings.php',
  33. type: 'POST',
  34. data: {
  35. "film_id": film_id,
  36. "ratings": ratings
  37. },
  38. succes: function(response){
  39. alert(response);
  40. }
  41. });
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. $.ajax({
  49. url:'modules/test.php',
  50. type: 'POST',
  51. data: {
  52. "film_id": film_id
  53. },
  54.  
  55.  
  56. success: function( data ) {
  57. var id = data;
  58. $('.db_ratings').attr("data-rating",id)
  59.  
  60.  
  61. var db_ratings = document.getElementsByClassName("db_ratings")
  62. for (var a = 0; a < db_ratings.length; a++){
  63. $(db_ratings[a]).starrr({
  64. readOnly: true,
  65. rating: db_ratings[a].getAttribute("data-rating")
  66. })
  67. }
  68. }
  69.  
  70.  
  71. });
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78. return false;
  79.  
  80. }
  81.  
  82.  
  83. </script>


2. 1 ajax aktualizuje dane w bazie a 2 pobiera ilość gwiazdek po aktualizacji.
3. Do formularza
4. W jaki sposób powinno to być wykonane poprawnie?
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
1 ajax aktualizuje dane w bazie a 2 pobiera ilość gwiazdek po aktualizacji.
No i znowu drugi ajax moze sie skonczyc szybciej niz pierwszy... Drugi ajax masz wykonac po zakonczeniu pierwszego to raz.
A nie moze ten pierwszy skrypt od aktualizacji zwracac poprostu info o stanie po aktualizacji?

Cytat
W jaki sposób powinno to być wykonane poprawnie?
Nie wiem, bo nie wiem co chcesz osiagnac. Nie sledze twoich watkow o gwiazdkach, nie wiem jak to dziala


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 20.08.2025 - 04:28