Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JQuery] $.ajax - przesyłanie post na inną stronę
Forum PHP.pl > Forum > XML, AJAX
McFly_PM
Próbuję napisać skrypt, który prześle dane post na inną stronę za pomocą ajax'a, szukałem już trochę na ten temat w internecie ale znalazłem tylko, e przez JSNOP da się przesłać dane GET i można na dodatek jakoś to oszukać i przesłać także POST, więc jak to zrobić ? Takowy kod nie działa:
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $.ajax({
  4. type: "POST",
  5. url: "http://tallos.pl/test.php",
  6. data: "name=John&location=Boston",
  7. success: function(msg){
  8. alert( "Data Saved: " + msg );
  9. }
  10. });
  11. });
  12. </script>
tadeurz
  1.  
  2. $.ajax({
  3. type: "POST",
  4. url: "http://tallos.pl/test.php",
  5. data: {name: John, location: Boston }, // jak nie działa to dawaj to w 'Boston' i 'John'
  6. success: function(msg){
  7. success: function(msg){
  8. alert( "Data Saved: " + msg );
  9. }
  10. });
  11.  
  12.  
  13.  

No i teraz w twoim pliku test.php:
  1. <?PHP
  2. $name = $_POST['name'];
  3. $location = $_POST['location'];
  4. echo $name.$location;
  5. ?>
McFly_PM
ani tak:
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $.ajax({
  4. type: "POST",
  5. url: "http://tallos.pl/test.php",
  6. data: {name: 'John', location: 'Boston' }, // jak nie działa to dawaj to w 'Boston' i 'John'
  7. success: function(msg){
  8. alert( "Data Saved: " + msg );
  9. }
  10. });
  11. });
  12. </script>
[JAVASCRIPT] pobierz, plaintext

ani tak:
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $.ajax({
  4. type: "POST",
  5. url: "http://tallos.pl/test.php",
  6. data: {name: John, location: Boston }, // jak nie działa to dawaj to w 'Boston' i 'John'
  7. success: function(msg){
  8. alert( "Data Saved: " + msg );
  9. }
  10. });
  11. });
  12. </script>
[JAVASCRIPT] pobierz, plaintext


nie działa :/
vokiel
AJAX ma ograniczenie tylko do tej samej domeny. Zatem trzeba to zrobić dookoła. Przesłać GET jest łatwo, bo można dodać element do drzewa DOM (np obrazek) z adresem src wskazanym w linku. Z przesłaniem zmiennych POST jest trudniej. Najłatwiej zrobić to przez swoje niby-proxy. Czyli skrypt np php na serwerze z którego uruchamiana jest strona przejmuje żądania ajaxowe i przekazuje je do innego serwera przykładowo przez cURL.
#luq
...albo ukryty formularz i odpalenie zdarzenia submit smile.gif
vokiel
Cytat(#luq @ 5.01.2011, 22:05:32 ) *
...albo ukryty formularz i odpalenie zdarzenia submit smile.gif

Ale w iframe, bo zwykły spowoduje przeładowanie strony
McFly_PM
Cytat(#luq @ 5.01.2011, 22:05:32 ) *
...albo ukryty formularz i odpalenie zdarzenia submit smile.gif

takie proste a ja na to nie wpadłem biggrin.gif

Nie będę szukał, zadam tu pytanie:
Zrobić formularz cały w iframe, czy można formularz zrobić poza iframe a w iframe tylko wynik zobaczyć ?

EDIT:
napotkałem problem, ponieważ jak dam:
[JAVASCRIPT] pobierz, plaintext
  1. $('iframe').load(function() {
  2. alert($('iframe').contents().find('body').html());
  3. });
[JAVASCRIPT] pobierz, plaintext


i iframe prowadzi do lokalnej strony, to działa bez problemu, ale jeśli strona jest na zewnątrz, to zwraca null, jak to zrobić ?

Teraz włączyłem konsole w przeglądarce i spostrzegłem:
Cytat
Unsafe JavaScript attempt to access frame with URL http://tallos.pl/test.php from frame with URL http://127.0.0.1/vote/orders.php. Domains, protocols and ports must match.

Grrr, szukałem, szukałem i nie nalazłem jak oszukać to i pobrać zawartość ifram'a

czy naprawdę nie ma żadnego rozwiązania ?
cojack
http://docs.jquery.com/Release:jQuery_1.2/...8using_JSONP.29

Co się nie da?
wookieb
Cytat(cojack @ 24.01.2011, 09:43:18 ) *

Ale to nie jest ajax.
cojack
AJAX - Asynchronous JavaScript and XML

robisz w JS, nie jest synchroniczne, bo przeglądarka nie czeka aż to się wykona, to co to w takim razie jest?


@edit
Ale chwila moment, bo zboczyliśmy z tematu. Mimo wszystko to nie jest rozwiązaniem problemu. Rozwiązanie padło już dawno powyżej.
wookieb
Jeżeli idziesz tym torem to ja tam nie widzę xml-a.
http://pl.wikipedia.org/wiki/AJAX Znajdź mi tam opis, który mówi, ze dynamiczne użycie <script> to ajax.
thek
Jak dla mnie najpewniejsze rozwiązanie podał Vokiel w 1 swoim poście. Skrypt do jakiego się odwołujesz staje się Twoim proxy dla zewnętrznego serwisu. Z poziomu tego skryptu uruchamiasz żądanie dla tej zewnętrznej strony i czekasz na rezultat, który potem wysyłasz z powrotem do strony wywołującej zdarzenie AJAX. Jeszcze nigdy na tym rozwiązaniu się nie zawiodłem.
McFly_PM
To rozwiązanie odpada, ponieważ IP przesyłającego post mu być takie samo jak klienta.

odświerzam poraz ostatni :/
vokiel
jQuery 1.5 wprowadza sporo zmian w obsłudze Ajax'a. Właściwie został przepisany. W standardzie jest obługa JSONP, do tego gotowe aliasy do $.ajax :
$.getJSON, automatycznie obsługujący jsonp (przykład ze strony):
[JAVASCRIPT] pobierz, plaintext
  1. $.getJSON(
  2. "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  3. {tags: "cat", tagmode: "any", format: "json"},
  4. function(data) {
  5. $.each(data.items, function(i,item){
  6. $("<img/>").attr("src", item.media.m).appendTo("#images");
  7. if ( i == 3 ) return false;
  8. });
  9. });
[JAVASCRIPT] pobierz, plaintext

Do tego $.getScript automatyzujący dołączanie nowych skryptów do strony oraz ich wykonywanie. Co prawda można to łatwo osiągnąć samemu: dodać do head element script, ustawić src, i onload tego skryptu wywołać funkcję, ale miło, że w jQuery jest to w automacie.

W ogóle dobrze przejrzeć jQuery.ajax, bo są takie rzeczy jak np.: crossDomain, jsonp, jsonpCallback.

Dużo zależy od tego jak jest zbudowany tamten skrypt, co zwraca, w jakim formacie itd.
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.