Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] Chrome i Access-Control-Allow-Origin.
Forum PHP.pl > Forum > XML, AJAX > AJAX
kebq
witam,

mój problem polega na tym iż nie do końca rozumiem dlaczego używając Chrome'a nie mogę na lokalnie załadować dokumentu do diva za pomoca ajaxa (jquery)
błąd którzy wyrzuca chrome to:
XMLHttpRequest cannot load xyz.html. Origin null is not allowed by Access-Control-Allow-Origin.

mój kod:
  1. <title>jQuery - Ajax dynamic content loading</title>
  2. <script type="text/javascript">
  3. function loadContent(id) {
  4. $("#contentArea").load("external"+id+".html");
  5. }
  6. </script>
  7. <script src="jquery-1.4.3.min.js" type="text/javascript"></script>
  8. </head>
  9. <body onLoad="loadContent(1);" id="page">
  10.  
  11. <a href="java script:loadContent(1);">Tab 1</a> |
  12. <a href="java script:loadContent(2);">Tab 2</a> |
  13.  
  14. <div id="contentArea" style="margin: 20px 0px 10px 10px; border: 1px solid #CCC;">
  15. &nbsp;
  16. </div>
  17.  
  18.  
  19. </body>
  20. </html>


błędu tego nie otrzymuje odpalając skrypt na serwerze.
paqu
kolego powiedz czy używasz jakiegoś frame worka?

A tak wogóle kolego to :
1. najpierw załaduj bibliotekę jquery potem pisz skrypt gdzie jej używa
2. nie stosuj ewentow na tagach html tylko, uzywaj jquery np $(document).ready();
3. Popraw kod jak niżej i zobacz czy poleci

Cytat(kebq @ 4.11.2010, 00:40:05 ) *
  1. <title>jQuery - Ajax dynamic content loading</title>
  2. <script src="jquery-1.4.3.min.js" type="text/javascript"></script>
  3. <script type="text/javascript">
  4.  
  5. $(document).ready(function(){
  6. $("#contentArea").load("external"+$(this).attr('id')+".html");
  7. });
  8. </script>
  9.  
  10. </head>
  11. <body id="page">
  12.  
  13. <a href="java script:loadContent(1);">Tab 1</a> |
  14. <a href="java script:loadContent(2);">Tab 2</a> |
  15.  
  16. <div id="contentArea" style="margin: 20px 0px 10px 10px; border: 1px solid #CCC;">
  17. &nbsp;
  18. </div>
  19.  
  20.  
  21. </body>
  22. </html>
kebq
Nie jestem przekonany czy Twoje rozwiązanie może działać,
przede wszystkim funkcja LoadContent nie jest zdefiniowana (usunąłeś ją),
poza tym nie wiem skąd ma być wzięty na starcie id
trzeba by też raczej podczepić się pod click a nie ready
Chrom po załadowaniu strony wyrzuca:
Kod
Uncaught TypeError: Cannot read property 'id' of null

a po kliknięciu w link oczywiście
Kod
Uncaught ReferenceError: loadContent is not defined


BTW dlaczego nie powinienem podczepiać się pod tagi htmla? widziałem mnóstwo takich przykładów na stronie jquery
sazian
Cytat(kebq @ 4.01.2011, 21:20:20 ) *
BTW dlaczego nie powinienem podczepiać się pod tagi htmla? widziałem mnóstwo takich przykładów na stronie jquery

bo niema takiej potrzeby i jest to niewygodne


  1. <title>jQuery - Ajax dynamic content loading</title>
  2. <script src="jquery-1.4.3.min.js" type="text/javascript"></script>
  3. <script type="text/javascript">
  4.  
  5. $(document).ready(function(){
  6. $('a.tab').click(function(){
  7. $("#contentArea").load("external"+$(this).attr('id')+".html");
  8. return false;
  9. });
  10. });
  11. </script>
  12.  
  13. </head>
  14. <body id="page">
  15.  
  16. <a href="#" class="tab">Tab 1</a> |
  17. <a href="#" class="tab">Tab 2</a> |
  18.  
  19. <div id="contentArea" style="margin: 20px 0px 10px 10px; border: 1px solid #CCC;">
  20. &nbsp;
  21. </div>
  22.  
  23.  
  24. </body>
  25. </html>

kebq
w kodzie jest błąd, tzn w linkach pominąłeś atrybut id (skrypt nie może przez to wczytać nazwy pliku)
jednak nawet poprawiając linie 18 i 19 na
Kod
<a href="#" class="tab" id="1">Tab 1</a> |
<a href="#" class="tab" id="2">Tab 2</a> |

i tak otrzymuje mój początkowy błąd:
Cytat
XMLHttpRequest cannot load external1.html. Origin null is not allowed by Access-Control-Allow-Origin.

tzn problem wciąż występuje pod najnowszym Chrome 8.0.55.224 a ja wciąż nie wiem jak to obejść
heniek87
Jesteście wręcz genialni poprawiliście wszystkie błędy ale jego problem dalej pozostał. Niszczycie w taki sposób każde forum. Ja bym za to banował u siebie.
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.