PDA

Zobacz pełną wersję : weryfikacja formularza ajax json i problem po przeniesienu strony na joomle



marcinp1984
09-07-2013, 21:02
Witam serdecznie,

Nie wiem, czy do końca wybrałem dobry dział no ale... jeśli nie to zgóry przepraszam :)

Poruszałem już tam sprawę na innym forum niestety nie otrzymałem żadnej odpwiedzi, która w czymkolwiek by mi pomogła może tu ktoś coś będzie wiedział.

Mam jakiś formularz do którego należy wprowadzić dane. Jego poprawność sprawdzana jest poprzez plik verify.js który wygląda następująco:



$(document).ready(function(){

var errorColor = '#052031';
var correctColor = '#000000';
var background = 'background-color';

$('#submit').click(function(){

$('#name').css(background, correctColor);
$('#mailto').css(background, correctColor);
$('#mailto2').css(background, correctColor);
$('#kod').css(background, correctColor);

var Error = false;

var form = document.getElementById('form');
var ile = form['o_mnie[]'].length;

var omnieVal = new Array();
var i=0;
var j=0;
for(i=0; i<ile; i++)
{
if(form['o_mnie[]'][i].checked)
{
omnieVal[j] = form['o_mnie[]'][i].value;
j++;
}
}

var szablonVal = 0;
var ile2 = form['szablon[]'].length;
for(i=0; i<ile2; i++)
{
if(form['szablon[]'][i].checked)
szablonVal = form['szablon[]'][i].value;
}


var nameVal = $('#name').val();
var ggVal = $('#gg').val();
var skypeVal = $('#skype').val();
var mailVal = $('#mail').val();
var panelVal = $('#panel').val();
var kodVal = $('#kod').val();
var mailToVal = $('#mailto').val();
var mailTo2Val = $('#mailto2').val();


if(szablonVal == '') {
$("#freeow").freeow("Nie wybrano szablonu!", "Wybierz interesujący Cię szablon oraz spróbuj ponownie.", {
classes: ["smokey", "error"],
autoHide: true,
autoHideDelay:7000,
});
Error = true;
}

if(Error == false) {

$.ajax({
type: 'POST',
url: 'generuj.php',
dataType: 'json',
data: {szablon:szablonVal,omnie:omnieVal,name:nameVal,gg :ggVal,skype:skypeVal,mail:mailVal,panel:panelVal, kod:kodVal,mailTo:mailToVal,mailTo2:mailTo2Val},

success: function(data){

if(data.error.message==true){
$("#freeow").freeow("Szablon został wysłany!", "Szablon wysłano na adres " + mailToVal, {
classes: ["smokey", "error"],
autoHide: true,
autoHideDelay:7000,
});

if(data.error.kodtrue==true)
document.getElementById('kod').value = '';
}

if(data.error.kod==true){
document.getElementById('kod').value = 'Niepoprawny kod!';
$('#kod').css(background, errorColor);
}
if(data.error.kodempty==true){
$('#kod').css(background, errorColor);
}

if(data.error.mailtoempty==true){
$('#mailto').css(background, errorColor);
}
else if(data.error.mailto==true){
document.getElementById('mailto').value = 'Niepoprawny format adresu e-mail!';
$('#mailto').css(background, errorColor);
}

if(data.error.mailto2empty==true){
$('#mailto2').css(background, errorColor);
}
else
{
if(data.error.mailto2c==true)
{
$('#mailto2').css(background, errorColor);
document.getElementById('mailto2').value = 'Niepoprawny format adresu e-mail!';
}
else
{
if(data.error.mailto2==true)
{
document.getElementById('mailto2').value = 'Niezgodne adresy e-mail';
$('#mailto2').css(background, errorColor);
}
}
}
if(data.error.name==true){
document.getElementById('name').value = 'Taki użytkownik nie istnieje!';
$('#name').css(background, errorColor);
}
if(data.error.nameempty==true){
$('#name').css(background, errorColor);
}
},

error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}

});
}
else
return false;
});
});




W pliku generuj.php również zachodzi jakaś weryfikacja i w zależności od zwróconych danych w formularzu powinny wyświetlać się konkretne komunikaty.

Jeśli strona była bez żadnego cmsa to wszystko pięknie działało. Po przeniesieniu strony na Joomle zaczał się problem bo nie następuje żadna weryfikacja formularza tylko wyrzucany jest error tzn zawsze wszystko ląduje w tym fragmencie



error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}


Nie wiem o co już chodzi, na poczatku myśałem że może nie znajduje mi pliku generuj.php i w tym jest problem. Jednak wrzuciłem już ten plik wszędzie gdzie można było i kombinowałem z różnymi ścieżkami i niestety ciągle to samo.

Alert jaki się pojawia to: "Nie znaleziono komponentu" bądź jeśli zmienię na url: '/generuj.php' to: "Artykułu nie znaleziono". O co tu biega? Coś się ze sobą gryzie? Bo nie bardzo wiem skąd tu się mogą brać jakies komunikaty Joomli.

Bardzo proszę o jakąś pomoc bo stoje w miejscu od tygodnia i nie wiem już co tu można zrobić :/

KES
09-07-2013, 21:40
Pewnie już to wiesz lecz dla zasady napisze w jquery używamy z jquery.noConflict(), jeżeli załadujesz jquery przez metody joomla to nie musisz się martwic bo on to zrobi za Ciebie.

Warto abyś pierwsze zaczął od poznania frameworka joomla a nie tworzenia czego po omacku.
Jeżeli formularz jest komponentem to zapoznaj się z budową komponentu (musisz mieć widzę o OOP oraz MVC).

Wiem nie rozwiązuje Twojego problemu ale chce Ci pokazać gdzie leży błąd.

marcinp1984
09-07-2013, 21:45
Tylko że tu nie ma właśnie żadnych komponentów itd. Wszystko jest od poczatku do końca wykonane przeze mnie łącznie z formularzem. Sądziłem że utworznie "szablonu" z mojej wcześniej utworzonej działającej strony będzie poprawne a to się jednak tutaj wysypało nie wiedzieć czemu

marcinp1984
10-07-2013, 16:56
no i w sumie nawiązując do powyższego niestety ciągle nie mam zielonego pojęcia gdzie może tkwić błąd

KES
10-07-2013, 22:44
Poczytaj, może rozświetli Ci drogę jak dokonać tego co chcesz. Tworzenie komponentu w joomla (http://docs.joomla.org/Component).

marcinp1984
10-07-2013, 22:51
ale czy tworzenie komponentu będzie w mojej sytuacji konieczne?

KES
11-07-2013, 08:41
Ewentualnie może być to moduł, lecz Joomla nie pozwala aby moduł przesyłał sam do siebie zapytanie ajax. Musisz to obejść.

marcinp1984
14-07-2013, 21:07
Póki co jeszcze z komponentem nie walczyłem bo próbowałem jakoś to wykonać bez tego :) Ale może troszeczkę odświeżę temat gdyż znów pojawiły się u mnie inne podejrzenia... Utworzyłem sobie nowe konto ftp i dodałem stronkę bez cms-a (obecnie wszystko robię na az) - mam już jedną taką wesję na home i tam wszystko ładnie działa. Ku mojemu zaskoczeniu na az jednak nie działa :( Znów ten skrypcik ajaxowy kończy się errorem tyle, że wyskakuje w alercie "Internal Server Error".

Czyżby az tego nie obsługiwało? Jest taka możliwość? Nie chce już mi się za bardzo istalować Joomli na homie żeby sprawdzić czy tam by to poszło z tym cms-em ale jeśli będzie trzeba to wyjścia nie ma.

KES
14-07-2013, 22:52
Nie rozumiem Twojej ostatniej wypowiedzi raz piszesz że tym razem odpalasz skrypt bez cms czyli bez Joomla! mam rozumieć. Jeżeli tak to niestety to forum Joomla! a nie błędów w skryptach.

Podpowiedź: Lecz włącz obsługę błędów to wyrzuci Ci normalny komunikat błędu.

A następnie piszesz że na home nie chce ci się instalować cms'a aby sprawdzić Twój skrypt czy działa. Nie pojmuję podejścia do sprawy.

marcinp1984
14-07-2013, 23:06
Bo wcześniej stornka stała na home i działała poprawnie, chciałem to zrobić na cms-ie ale już na az czyli tam gdzie docelowo miało to leżeć. Dzisiaj tak dla sprawdzenia wrzuciłem to na az bez cmsa i na tym hostingu pojawia się ten błąd. Sądziłem że ktoś może coś wie na temat tego, że w az są z tym problemy a że to przy temacie to się zapyałem :)

Jeśli chodzi o ta obsługę błędów to rozumiem, że to już na tej stronce która stoi na Joomli?

Podejście do sprawy było takie, zeby zaoszczędzić czas jeśli by ktoś wiedział czemu tak się dzieje na az. Ale już od jakichś 5 minut jooomla wgrywa się na homa. Jak tam to zadiała tzn że az jest jakieś kiepskie

marcinp1984
15-07-2013, 01:06
Dobra zainstalowałem Joomle (tyle że 2.5 bo 3 nie mogłem) na home i tam wszystko działa czyli straciłem prawie dwa tygodnie szukając błędu którego tak na prawde chyba nie ma :/
Więc teraz znów pojawia się pytanie... czy to problem z serwerem i z az faktycznie mogą być tu problemy czy może to też od wersji Joomli zależeć?

KES
15-07-2013, 01:18
Włącz obsługę błędów na serwerze az i zobacz co ci zwraca ten komunikat.

marcinp1984
15-07-2013, 11:44
Tylko nie do końca mam możliwość, żeby to włączyć z panelu admina przynajmniej ja nic takiego nie widzę.

Ogólnie to już jestem głupi i nie wiem z czego to wynika. Wczoraj pisałem że na home to działa i faktycznie działa... ale działa tylko wtedy dopóki formularz znajduje się w głównym menu bo jeśli znajdzie się w jakimś podmenu to jest to samo co na az :/ A ścieżka jest jest raczej poprawna. Zresztą plik generuj.pho jest wszędzie wrzucony byle by zadziałało. Nie rozumiem tylko czemu bez cms działa na home na na az nie pomimo że jest dokładnie to samo. Już normlanie mi się niedobrze od tego robi :D

KES
15-07-2013, 15:53
wrzuć do swojego pliku do którego masz zapytanie ajax:

error_reporting(-1);

marcinp1984
15-07-2013, 16:59
Wrzuciłem, czyli do tego pliku generuj.php ale dzieje się cały czas to samo bo do tego pliku generuj.pho w ogóle to nie włazi tak jakby go nie widziało czy coś.

marcinp1984
15-07-2013, 17:40
Przed chwilką zainstalowałem sobie jeszcze raz joomle 3.1.1 na nowym koncie ftp na az i dodałem ten formularz pod jedną z głównych pozycji menu a nie podmenu (tak jak miałoby to wyglądać docelowo i tak było pierwotnie) i kurde działa... Załamka jakaś normalnie. Czyli z serwerem jest wszystko ok. Fakt, że musiałem zmienić jedną klasę z public na public static ale to może dla tego, że na home było php5.2 a na az mam 5.4. Nie mniej jednak widać że serwer to obsługuje i jest wszystko ok. Tylko teraz pojawia się pytanie czemu to nie chce działać jeśli nie znajduje się ten formularz pod główną pozycją menu?

marcinp1984
16-07-2013, 00:27
Chyba chwilowo problem rozwiązany. Dla ftpa na którym stała sronka pod joomlą 3.1 było ustawione php 5.3. Wgrałem joomle 2.5 na az na innego ftpa i zadziałało ale domyślenie był ustawiony php 5.2. Już miłem przerabiać wszystko pod joomle 2.5 ale tak od niechcenia przestawiłem sobie dla pierwszego ftpa php z 5.3 na 5.4 i kurde zadziałało... tyle czasu poszukiwań a tu takie coś...