Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] [PHP] skanowanie kodu kreskowego
Forum PHP.pl > Forum > XML, AJAX
Paplo
Witam

Próbuje zrobić skanowanie kodu kreskowego za pomocą kamerki i wyświetlenie zaczytanego produktu obok w divie, aktualnie mam:

  1. <canvas id="scan"></canvas>
  2. <hr>
  3. <span class="item_detail_title">Zczytane Kody:</span><br>
  4. <ul id="eanCodelist"></ul>
  5. <script type="text/javascript">
  6. var txt = "innerText" in HTMLElement.prototype ? "innerText" : "textContent";
  7. var arg = {
  8. resultFunction: function(result) {
  9. var aChild = document.createElement('li');
  10. aChild[txt] = result.format + ': ' + result.code;
  11. document.querySelector('#eanCodelist').appendChild(aChild);
  12.  
  13. var data = "search=true&ean=5634851467214&ean13="+ result.code;
  14.  
  15. $.ajax({
  16. type: "POST",
  17. url: "php/ean133.php",
  18. data: data,
  19. cache: false,
  20. success: function(event, ui)
  21. {
  22.  
  23. $('#name_1').val(ui.item.name);
  24. $('#kod_1').val("65456465465456");
  25.  
  26. }
  27. });
  28. }
  29. };
  30. new WebCodeCamJS("canvas#scan").init(arg).play();
  31. </script>



  1. <div class="form-group">
  2. <label class="item_label" for="name_1">
  3. <span class="item_detail_title">Nazwa</span>
  4. </label>
  5. <div class="col_1">
  6. <input type="text" class="form-control" id="name_1" name="name_1" required="required" value="">
  7. </div>
  8. </div>
  9. <div class="form-group">
  10. <label class="item_label" for="kod_1">
  11. <span class="item_detail_title">Kod produktu</span>
  12. </label>
  13. <div class="col_1">
  14. <input type="text" class="form-control" id="kod_1" name="kod_1" required="required" value="">
  15. </div>
  16. </div>


zaczytuje prawidłowo lecz dla bezpieczeństwa dałem narazi stała wartość w "data"

ean133.php:
  1. $return_arr = array();
  2.  
  3. if (isset($_POST['search']))
  4. {
  5. $productEan = $_POST['ean'];
  6.  
  7. $fetch = $db->query("SELECT * FROM `products` WHERE product_ean13 = $productEan");
  8.  
  9. $row = $fetch->fetch_array(MYSQL_ASSOC)
  10.  
  11. $row_array['name'] = $row['product_name'];
  12.  
  13. array_push($return_arr,$row_array);
  14.  
  15. /* Toss back results as json encoded array. */
  16. echo json_encode($return_arr);
  17.  
  18. return json_encode($return_arr);
  19. }


i wszystko działa kody są zaczytywane i wypisywane pod polem skanowania, tylko mam problem z danymi wyjściowymi, ponieważ jak kod zostanie wczytany to wypisuje mi ERROR w konsoli POST http://example.pl/php/ean133.php 500 (Internal Server Error), i już nie wiem jak sobie z tym poradzić sad.gif proszę o jakaś podpowiedz
markuz
Zamiast
  1. return json_encode($return_arr);
musisz wstawić:
  1. header('Content-type: application/json');
  2. echo json_encode($return_arr); die();
Paplo
dalej to samo, choć zaraz po zmianie to był inne błąd "Failed to load resource: the server responded with a status of 500 (Internal Server Error)" ale teraz już na niego nie mogę trafić
markuz
Masz jakiś błąd w PHP.
Na poczatku pliku wklej:
  1. ini_set('display_errors','1');

I sprawdź w odpowiedzi z serwera (w konsoli po stronie przeglądarki) co wyrzucił.
Paplo
miałem to wklejone, od strony przeglądarki nic nie było widać ;/ dopiero w logi apache zerknąłem i " $row = $fetch->fetch_array(MYSQL_ASSOC) " bez " ; " ;/;/ sorki ze tak namieszałem ;/

ale pojawił się problem inny jak jeszcze byś mógł ;p
"Uncaught TypeError: Cannot read property 'name' of undefined"
nospor
$row_array['name'] = $row['product_name'];
Nigdzie nie widze bys zdefiniowal $row_array
Paplo
$return_arr = array();

jest, a jak wrzucam $row_array do niego to już nie potrzebuje definiować, ale dla pewności zdefiniowałem też $row_array, bo wszystko warto sprawdzić, ale jednak nie pomogło sad.gif
nospor
A ktorej dokladnie linii dotyczy error z 'name'? Podaj dokladny komunikat bledu z liniami i takie tam

ps: ja nie mowilem o $return_arr a o $row_array. To ze zdefiniujesz jedna tablice, ma sie nijak do drugiej
Paplo
138: success: function(event, ui)
139: {
140: $('#name_1').val(ui.item.name);
141: }

Uncaught TypeError: Cannot read property 'name' of undefined -> scanSearch.php:140
$.ajax.success @ scanSearch.php:140
o @ jquery.min.js:2
p.fireWith @ jquery.min.js:2
w @ jquery.min.js:4
d @ jquery.min.js:4

dokładnie to chodzi o linie "140"
nospor
O rety... to mow od razu....

ui.item.name
ui.item - nie istnieje.

edit:
w zgodzie z dokumentacja to pierwszy parametr funckcji success to dane jakie przyszly z serwera.
Wyswietl sobie wszystkie parametry funckcji success() jak nie wiesz co one zawieraja i nie strzelaj w ciemno
Paplo
mam już wszystko co chciałem, dziękuje wszystkim za podpowiedzi i sugestie smile.gif heart.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.