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 31.12.2010, 20:06:36
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 2.01.2011, 18:05:04
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 5.01.2011, 21:40:22
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 5.01.2011, 22:02:18
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 5.01.2011, 22:05:32
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 smile.gif


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
vokiel
post 5.01.2011, 22:21:37
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 smile.gif

Ale w iframe, bo zwykły spowoduje przeładowanie strony


--------------------
Go to the top of the page
+Quote Post
McFly_PM
post 23.01.2011, 18:05:39
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 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 ?

Ten post edytował McFly_PM 7.01.2011, 02:47:55
Go to the top of the page
+Quote Post
cojack
post 24.01.2011, 09:43:18
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?


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
wookieb
post 24.01.2011, 09:49:47
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 24.01.2011, 09:53:19
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


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
wookieb
post 24.01.2011, 09:57:15
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 24.01.2011, 10:28:46
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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
McFly_PM
post 18.03.2011, 23:47:13
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 19.03.2011, 17:15:10
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 14:23