Paweł Andruszkiewicz

Paweł Andruszkiewicz Technik informatyk

Temat: [as3] wysyłanie emaili

Witam
poprawiony kod

import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLRequestMethod;

imie_txt.text = nazwisko_txt.text = email_txt.text = telefon_txt.text = pytanie_txt.text = status_txt.text = "";

var req:URLRequest = new URLRequest("wyslij_email.php");
var loader:URLLoader = new URLLoader;
req.method = URLRequestMethod.POST;


function wyslij(e:MouseEvent):void
{
if (imie_txt.text == "" || nazwisko_txt.text == "" || email_txt.text == "" || telefon_txt.text == "" || pytanie_txt.text == "")
{
status_txt.text = "Proszę wypełnic wszystkie pola";
}
else if (!sprawdzEmail(email_txt.text))
{
status_txt.text = "Błędny Adres email";
}
else
{
status_txt.text = "Wysyłam wiadomość"
var dane : String = "imie=" + imie_txt.text
+ "&nazwisko=" + nazwisko_txt.text
+ "&email=" + email_txt.text
+ "&telefon=" + telefon_txt.text
+ "&pytanie=" + pytanie_txt.text;
var vars:URLVariables = new URLVariables(dane);
vars.dataFormat = URLLoaderDataFormat.TEXT;
req.data=vars;
loader.load(req);
}

}

function sprawdzEmail(s:String):Boolean
{
var p:RegExp = /(\w|[_.\-])+@((\W|-)+\.)+\w{2,4}+/;
var r:Object = p.exec(s);
if(r == null)
{
return false;
}
return true;
}

wyslij_mc.addEventListener(MouseEvent.CLICK, wyslij);
Paweł Andruszkiewicz edytował(a) ten post dnia 07.02.11 o godzinie 18:29
Piotr Rachtan

Piotr Rachtan Lead Flash Platform
Developer /
Shockwave Developer

Temat: [as3] wysyłanie emaili

jak sama nazwa wskazuje "before end of program" :)

Zamknij nawias '}' przed 'function sprawdzEmail'
pozatym odnajdź jeszcze raz tą stronę bo źle to przekleiłeś ten kod na pewno nie wysyła maili - brakuje trochę gdzieś pod


else
{
var dane: String...


i pewnie jak przekleisz jeszcze raz całość to i zagubiony nawias się odnajdzie :)Piotr Rachtan edytował(a) ten post dnia 07.02.11 o godzinie 17:38
Paweł Andruszkiewicz

Paweł Andruszkiewicz Technik informatyk

Temat: [as3] wysyłanie emaili

wiem wiem ze nie jest cały tylko w tym momencie nie kompilował mi sie :) literówki poprawione lecz teraz zwraca null nawet przy poprawnym wypełnieniu formularza hm...Paweł Andruszkiewicz edytował(a) ten post dnia 07.02.11 o godzinie 18:03
Piotr Rachtan

Piotr Rachtan Lead Flash Platform
Developer /
Shockwave Developer

Temat: [as3] wysyłanie emaili

Paweł Andruszkiewicz:
lecz teraz zwraca null

???
Paweł Andruszkiewicz

Paweł Andruszkiewicz Technik informatyk

Temat: [as3] wysyłanie emaili

kod poprawiłem w pierwszym poscie
w trace zwraca null po wypełnieniu formularza i próbie wysłania
jak puste pola piszę "Proszę wypełnic wszystkie pola"
jak są dane poprawne "Błędny Adres email"Paweł Andruszkiewicz edytował(a) ten post dnia 07.02.11 o godzinie 18:32
Piotr Rachtan

Piotr Rachtan Lead Flash Platform
Developer /
Shockwave Developer

Temat: [as3] wysyłanie emaili

teraz trace zniknał z kodu :)

spróbuj:


var vars : URLVariables = new URLVariables();
vars.nazwisko = nazwisko_txt.text;
...
req.data = vars;


bardzo możliwe, że prz takim zapisie:

var dane : String = "imie=" + imie_txt.text;

rozwala Ci kodowanie (np. tekst zawiera znaki specjalne) i URLVariables nie jest w stanie tego sparsować.


vars.dataFormat = URLLoaderDataFormat.TEXT;


Powyższe jest nie potrzebne (a przynajmniej nie tutaj). Działa bo vars typu URLVariables rozszerze Object i możesz w ten sposób utworzyć właściwość obiektu. Powyższe da Ci tylko tyle, że w POST dojdzie jeszcze jedna zmienna 'dataFormat' i o wartości 'text'.

Przypuszczam, że chodziło Ci o 'loader.dataFormat = ...' przeczytaj sobie w helpie do czego służy właściwość 'dataFormat' w URLLoader'ze.

Na loaderze (URLLoader) powinieneś dopiąć sobie jeszcze listenery do:


// Po odebraniu odpowiedzi z serwera.
// Możesz sobie w tym sendmailu zrobić jakies echo('Error'); / echo('Ok');
// do odczytania statusu operacji.
loader.addEventListener(Event.COMPLETE, onLoadingComplete);

// Najczęściej gdy serwer niedostępny
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);

// Gdy nie masz uprawnień do otwarcia pliku z serwera.
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurity);


i powinno już działać :)



Wyślij zaproszenie do