Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Duży plik z danymi Autocomplete
Forum PHP.pl > Forum > XML, AJAX
rafiksq
Mam pewną stronę zamienie-nieruchomosc.pl z polem autouzupelniania. Niestetyplik data zajmuje 0.5MB przez co na urzadzenia mobilnych sugestia trwa przynajmniej 15sek.

data:
view-source:http://pisipolska.home.pl/zamienie_nowa/plugins/autocom/data.js

kod:
view-source:http://pisipolska.home.pl/zamienie_nowa/plugins/autocom/demo.js


Czy jest jakiś sposób optymalizacji ?
nospor
Autocomplete dla tak duzysz danych ma szukac danych w bazie danych i zwracac tylko to co znajdzie w bazie. Wowczas to dziala migusiem
rafiksq
Ale przy każdej wpisywanej literce musi łaczyć się z bazą i wyszukiwać ponownie? Jest jakiś konkretny schemat działania ?
nospor
Cytat
Ale przy każdej wpisywanej literce musi łaczyć się z bazą i wyszukiwać ponownie?
Dokladnie tak.
Schemat dzialania? Sciagnij sobie jakis normalny autocmplete, np. jQuery UI autocomplete i rob jak podali w przykladach
kapslokk
Przy każdej literce ajax pyta skryptu, co znalazl w bazie. Skrypt robi zapytanie do bazy i wypluwa jsona. Ot cała technika.

https://daveismyname.com/autocomplete-with-...nd-jquery-ui-bp
rafiksq
Dzieki za szybkie odpowiedzi.

Czyli wpisujemy 'a' - ajax pobiera wszystkie słowa na 'a', zapisuje do jsona i wyswietla w inpucie.
wpisujemy aug - ajax pobiera wszystkie słowa na 'aug', zapisuje do jsona i wyswietla w inpucie.

tak?
rafiksq
Dzięki wszystkim za pomoc, problem rozwiązany.

Jednak nie działa sad.gif na moim lokalnym serwerze websev wszystko ok a na home.pl niestey jak zwykle lipa sad.gif((
zamienie-nieruchomosc.pl

Problem polega na tym, że stronę mam na home.pl

link bezposredni do katalogu ze stroną to:
pisipolska.home.pl/zamienie_nowa - tu działa
zamienie-nieruchomosci.pl - domena podpieta do serwera z przekierowaniem na katalog zamienie_nowa - tu nie działa

Zauważyłem,że nie działają skryptu w jquery, które mają coś pobrać z pliku jak właśnie catcomplete czy $.post

Czy ktoś wie o co chodzi ?
markuz
Kod
onload="mapaStart()"

Kod
Uncaught ReferenceError: mapaStart is not defined

Kod
XMLHttpRequest cannot load http://pisipolska.home.pl/zamienie_nowa/search.php?term=War. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://zamienie-nieruchomosc.pl' is therefore not allowed access.

Czasami warto otworzyć konsole jak się pisze skrypty w JavaScript.

Głównie chodzi o to, że dla bezpieczeństwa domyślnie nie można wykonywać requestów na inne domeny. Poczytaj o Access-Control-Allow-Origin i dodaj odpowiedni nagłówek - albo wykonaj request na tą sama domene.
rafiksq
O tym nie wiedziałem smile.gif

Dodałem do search.php : header('Access-Control-Allow-Origin: *'); ale też nie działa
markuz
Widzę, że nie lubisz korzystać z konsoli - ostatni raz zrobie to za Ciebie:
Cytat
XMLHttpRequest cannot load http://pisipolska.home.pl/zamienie_nowa/search.php?term=Wa. The 'Access-Control-Allow-Origin' header contains multiple values 'http://zamienie-nieruchomosc.pl, *', but only one is allowed. Origin 'http://zamienie-nieruchomosc.pl' is therefore not allowed access.


Nagłówki teraz wyglądają tak:

Cytat
Access-Control-Allow-Headers: origin, x-requested-with, content-type
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin: http://zamienie-nieruchomosc.pl
Access-Control-Allow-Origin: *


Nie może być 2 razy Access-Control-Allow-Origin.
rafiksq
Dzięki ale dla mnie to już wyższa szkoła jazdy, dzięki za pomoc, mam to wstawić do htaccess?
markuz
Pokaż plik search.php oraz .htaccess z http://pisipolska.home.pl/zamienie_nowa/
rafiksq
  1. htaccess:
  2. Access-Control-Allow-Headers: origin, x-requested-with, content-type
  3. Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
  4. Access-Control-Allow-Origin: <a href="http://zamienie-nieruchomosc.pl" target="_blank">http://zamienie-nieruchomosc.pl</a>
  5. Access-Control-Allow-Origin: *
  6.  
  7. ErrorDocument 404 <a href="http://zamienie-nieruchomosc.pl" target="_blank">http://zamienie-nieruchomosc.pl</a>
  8.  
  9.  
  10. Options FollowSymLinks
  11. RewriteEngine On
  12. RewriteRule ^(.+),([0-9]+)$ index.php?section=show_offer&id=$2 [L]



  1. header('Access-Control-Allow-Headers: origin, x-requested-with, content-type');
  2. header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
  3. header('Access-Control-Allow-Origin: <a href="http://zamienie-nieruchomosc.pl&#39%3b%29;" target="_blank">http://zamienie-nieruchomosc.pl');</a>
  4. header('Access-Control-Allow-Origin: *');
  5.  
  6. include("include/mysql_connect.php");
  7.  
  8. if (isset($_GET['term'])){
  9. $tab = array();
  10. @mysql_query("SET NAMES utf8");
  11.  
  12. $result1 = mysql_query("SELECT id, name FROM geo_province WHERE name LIKE '".$_GET['term']."%' ORDER BY name");
  13. while ($row1 = mysql_fetch_array($result1)) {
  14. $tab[] = array('label'=>$row1['name'],'category'=>'województwo:');
  15. }
  16. $result2 = mysql_query("SELECT id, name, province FROM autocomplete WHERE name LIKE '%".$_GET['term']."%' ORDER BY name");
  17. while ($row2 = mysql_fetch_array($result2)) {
  18. $tab[] = array('label'=>$row2['name'],'category'=>$row2['province']);
  19. }
  20. }
  21. echo json_encode($tab);





markuz
Usuń
Kod
Access-Control-Allow-Origin: <a href="http://zamienie-nieruchomosc.pl&#39%3b%29;" target="_blank">http://zamienie-nieruchomosc.pl</a>

W htaccess i w pliku php
rafiksq
Dzięki jeszcze raz za zaangażowanie.

WKlejając kod tutaj system automatycznie dodał łącze <a> w rzeczywistości jest tylko sam adres.

Udało mi się smile.gif

htaccess:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>


plik php w odwołaniu jquery:
header('Access-Control-Allow-Headers: origin, x-requested-with, content-type');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Origin: *');

wszystkie pozostałe zapytania jquery zmieniłem z get i post na ajax.

Wszystko działa smile.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.