Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lokalny skrypt w połączeniu z AJAX?
Forum PHP.pl > Forum > XML, AJAX
Paplo
Witam

posiadam aplikacje webową, i napotkałem duży problem bo muszę dorobić do niego moduł do drukarki fiskalnej, ale większość problemów rozwiałem albo przynajmniej mam pomysł na nie, ale do rzeczy.

Połączyłem drukarkę fiskalna z skryptem js i html'em za pomocą Activex.
I tutaj tutaj mam problem bo Activex działa tylko lokalnie(przynajmniej tak wyszło z moich testów ale nie jestem pewien, mogę się mylić), ok, to zrobiłem ten moduł lokalnie czyli css js i html "w pełni działający" moduł lokalnie na komputerze i wszystko ładnie smiga, ALE teraz potrzebuje wymiany danych z baza danych na serwerze, i tutaj myślałem ze mi pomoże AJAX ale cały czas dostaje błąd - status = 0 czyli Not connect. Verify Network. czyli co nie da się lokalnie korzystać z ajaxa?

script w html'u jest na razie trywialny do testów tylko:

  1. <script>
  2. ajax = function (ean13){
  3. $.ajax({
  4. type: "POST",
  5. url: "www.mojastrona.pl/sklep/ajax/ajax_szukaj_ean.php", // z -> 'htt ps://www.mojas....' tez było
  6. data : {
  7. ean13: ean13
  8. },
  9. dataType: "json",
  10. success: function(response){
  11. console.log(response);
  12. }
  13. });
  14. }
  15. </script>


i odpowiedz umieszczona na serwerze:

  1. <?php
  2.  
  3. echo json_encode(array( 'success' => '1', 'text' => 'oto twoj product...' ));
  4.  
  5. ?>
trueblue
1. Dodaj protokół do URL. Choć skoro to wywołanie lokalne (jak rozumiem w ramach tej samej domeny), to wystarczy ścieżka bezwzględna.
2. Sprawdź konsolę przeglądarki oraz zakładkę sieciową, aby sprawdzić jaka jest (jeśli jest) odpowiedź na żądanie.
viking
Aby działało zdalnie serwer docelowy musi mieć zdefiniowaną politykę Access-Control-Allow-Origin. Poczytaj o CORS.
Paplo
dziękuje smile.gif wystarczyło dodać jedną linie do php na serwerze smile.gif dziękuje za podpowiedz.

Witam piszę ponownie w tej sprawie bo już nie mam pomysłu sad.gif i chyba zostałem zaszachowany

Potrzebuje odpalić skrypt lokalnie i to na IE, co zrodziło tyle problemow że już nie mam pomysłu
// Poprzedni temat zadziałał beż zarzutu na chrome

chrome:
- ajax działa lokalnie (wszędzie), ale nie działa ActiveX
IE:
- ajax działa jak jest na serwerze(nawet dwóch rożnych serwerach i domenach), ale NIE działa ActiveX
- ajax nie działa loklanie(czyli C:\Script\index.html), ale działa ActiveX

I co teraz mam zrobić żeby wszystko działało smile.gif ? proszę o jakaś małą podpowiedz.

Pomysły na razie to:
- poszukać wtyczki do chroma na ActiveX - znalazłem ale chrome mi cały czas wyłącza go bo nie jest ze sklepu chrome i z tego co wyczytałem to nie da się jej włączyć w takim przypadku.
- dodać do zaufanych jak napisano tutaj: http://stackoverflow.com/questions/2320531...rect=1&lq=1 - też nie pomogło



  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.  
  7. <meta name="robots" content="NOFOLLOW, NOINDEX">
  8.  
  9. <script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
  10.  
  11. <script>
  12. var contentType ="application/x-www-form-urlencoded; charset=utf-8";
  13.  
  14. if(window.XDomainRequest) // for IE8,IE9
  15. contentType = "text/plain";
  16.  
  17. ajax = function (ean){
  18. $.ajax({
  19. url:"http://199.77.156.43/ajax/ajax_shop.php",
  20. data: {
  21. ean: ean
  22. },
  23. type:"POST",
  24. dataType:"json",
  25. contentType:contentType,
  26. success:function(data)
  27. {
  28. alert("Data: "+JSON.stringify(data));
  29. },
  30. error:function(jqXHR,textStatus,errorThrown)
  31. {
  32. alert("You can not send Cross Domain AJAX requests: "+errorThrown); // -> na IE daje "No Transport"
  33. }
  34. });
  35. }
  36.  
  37. $(document).ready(function() {
  38. $(document).on('click', '#yes-btn', function(event) {
  39. event.preventDefault();
  40. /* Act on the event */
  41. ajax( $("#ean13").val() );
  42. });
  43. });
  44.  
  45. </script>
  46.  
  47. </head>
  48. <body...


  1. <?php
  2. header('Access-Control-Allow-Origin: *');
  3. header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
  4.  
  5. if(isset($HTTP_RAW_POST_DATA)) {
  6. parse_str($HTTP_RAW_POST_DATA,$arr);
  7. echo json_encode($arr);
  8. }
  9. else
  10. {
  11. echo json_encode($_POST);
  12. }
  13. ?>
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-2024 Invision Power Services, Inc.