Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQuery] $.ajax - przesyłanie post na inną stronę
McFly_PM
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2010

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
tadeurz
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
McFly_PM
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2010

Ostrzeżenie: (0%)
-----


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 :/

Ten post edytował McFly_PM 5.01.2011, 21:45:08
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
#luq
post
Post #5





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


...albo ukryty formularz i odpalenie zdarzenia submit (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Cytat(#luq @ 5.01.2011, 22:05:32 ) *
...albo ukryty formularz i odpalenie zdarzenia submit (IMG:style_emoticons/default/smile.gif)

Ale w iframe, bo zwykły spowoduje przeładowanie strony
Go to the top of the page
+Quote Post
McFly_PM
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2010

Ostrzeżenie: (0%)
-----


Cytat(#luq @ 5.01.2011, 22:05:32 ) *
...albo ukryty formularz i odpalenie zdarzenia submit (IMG:style_emoticons/default/smile.gif)

takie proste a ja na to nie wpadłem (IMG:style_emoticons/default/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 ?

Ten post edytował McFly_PM 7.01.2011, 02:47:55
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


http://docs.jquery.com/Release:jQuery_1.2/...8using_JSONP.29

Co się nie da?
Go to the top of the page
+Quote Post
wookieb
post
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(cojack @ 24.01.2011, 09:43:18 ) *

Ale to nie jest ajax.
Go to the top of the page
+Quote Post
cojack
post
Post #10





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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.

Ten post edytował cojack 24.01.2011, 09:57:45
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.
Go to the top of the page
+Quote Post
thek
post
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post
McFly_PM
post
Post #13





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.02.2010

Ostrzeżenie: (0%)
-----


To rozwiązanie odpada, ponieważ IP przesyłającego post mu być takie samo jak klienta.

odświerzam poraz ostatni :/
Go to the top of the page
+Quote Post
vokiel
post
Post #14





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:01