JavaScript dziala w Chromie, a nie dziala w Firefox

0

Witam,

Mam kilka funkcji napisanych w jquery. Ten sam kod dziala w chromie, ale nie dziala w firefoxie. Zaktualizowalem biblioteke jquery, ale dalej ten sam efekt. Po stronie PHP, nie dostaje, zadnych bledow. Jakies pomysly co moze byc nie tak?

0

to sprawdź błędy JS w konsoli.

0

i daj kod jakiś

0

http://codetidy.com/4456/

konsola rzuca błędem do tej linijki: event.preventDefault();

0

linia 55, zamień na:

function addFixedPrice(event) {

linia 224:

function addOpenPrice(event) {
0

Zmienilem to, ale dalej nie dziala. Dodatkowo zakomentowalem console.log.
Jakies pomysly?

http://codetidy.com/4465/

0

to powiedz czym się objawia "nie działa", i najlepiej umieść to gdzieś online, tak żeby dało się samemu kliknąć i zbadać problem

0

Wydaje mi sie, ze z przesylaniem danych jest cos nie tak.

http://codetidy.com/4466/

W xdebugerze pod firefox $_POST jest pusty, pod chromem nie. Z mienilem w jquery funkcje z $.post na $.ajax ten sam efekt.
Zaraz bede sprawdzal czy zmienne nie sa puste.

Tak, zmienne przesylane w funkcji post nie sa puste. Jest to co ma byc.
"nie dzialanie" objawia sie tym, ze dane sie nie zapisuja do db.

Wersja Firefoxa jest nowa, jedna z najnowszych, albo aktualna.

W IE tez wszystko smiga jak sie nalezy.

Jednak cos jest nie tak z $.post i $.ajax. W przegladarce widze, ze przesyla posta request, ale po stronie PHP nic nie odbiera. Nic tam nie ma. I co teraz? Na co zmienic tego $.post czy $.ajax?

Wiem, gdzie jest blad. W funkcji .submit(). Jak klikam submit formularz sie wysyla, ale ajax nie <ort>(człowieku, słownika użyj czasem) zdanza</ort> wyslac posta :) Jakies pomysly?

0
poniatowski napisał(a):

Wiem, gdzie jest blad. W funkcji .submit(). Jak klikam submit formularz sie wysyla, ale ajax nie zdanza wyslac posta :) Jakies pomysly?

preventDefault, żeby zablokować submita.

0

Dalem cos takiego //codetidy.com/4467/

Jak zablokuje submita przez ta funkcje to jak go poxniej odblokowac?

0

a potrzebujesz? nie oglądam nawet co ten kod robi, ale zazwyczaj albo coś posyłasz ajaxem, albo robisz submit formy. jeżeli chcesz dwa naraz to potem możesz sztucznie wywołac submit formy, i pogoogluj za sposobem na rozróżnienie "oryginalnego" submita, od tego "sztucznego" przez JS wywołanego.

0

Tak, potrzebuje to zmixowac. Jak klikam w submit, musze przeslac $_POSTa przez form i $_POSTa przez £.ajaxa. Musze zrobic to tak, ze najpierw wysle i zapisze ajaxa, a poxniej wysle posta z formularza. Inaczej nie moze byc, bo ajax nie zdazy pobrac posta z formularza. Fajnie by bylo jakos uspic na chwile submita, az ajax skonczy prace.

Jesli chce uzyc tych dwoch opcji, czego dokladnie mam szukac w google?
Rozumiem mechanizm, ide, wiem jak to ma dzialac, ale nie wiem co mam uzyc w jquery?

preventevent?
ajaxStop then submit?

Nie wiem

0

Mozesz zachowac formularz, zmienic submita na zwyklego buttona, a wtedy po wywolaniu ajaxa zrobic:

$('#form').submit();

Btw. nie czytalem kodu, napisalem to po prostu czytajac ostatni post.
@Edit. To czy uzywasz posta czy ajaxa nie ma znaczenia, bo wewnatrz jQuery, post i tak przechodzi w wywolanie ajaxa, jesli dobrze pamietam.

0

prowizorka:

$('#form').submit(mojSubmit);

mojSubmit = function(e) {
  var that = this;
  if (eventPrawdziwy) { // tutaj wykryj czy event jest prawdziwy czy triggerowany przez JS
    e.preventDefault(); // jak prawdziwy to go tłumimy
    $.ajax({ // wykonujemy ajaxa
      // parametry
      success: function(info) { // odbieramy dane
        that.submit(); // wysyłamy fałszywy submit na tym formularzu
      }
    })
  }
  else { // jezeli event jest triggerowany to go już nie tłumimy, przeglądrka przejdzie pod adres z action
    // tu w sumie chyba nic nie chcemy robić, no ale tego else'a zrobiłem
  }
};

Ty jedyne co musisz znaleźć to jak wykryć prawdziwy event od tego triggerowanego przez JS (zawsze możesz porównać console.log(e) jednego i drugiego)

0

W bardzo duzym skrocie czy to nie bedzie cos takiego:
http://codetidy.com/4469/

Jeszcze jedna rzecz. Klikajac na button formularza, najpierw chce wyslac rzadanie ajaxa, a dopiero poxniej jak bedzie ukonczony w success wyslac oryginalny formularz.

cos takiego jeszcze wyslalem: ($(e.explicitOriginalTarget).is(':submit')

@dzek69u, pomoz z tym rozroznianiem prawdziwego a triggerowanego submita w JS?
Nie moge tego znalezc ni jak, zlituj sie.

albo jeszcze lepiej. jak moge rozpoznac kiedy jest wysylany ajax? beforeSend albo cos takiego?
chce zrobic loadera, ktory sie pokazuje uzytkownikowi w czasie kiedy dziala ajax. Do tego mam podlaczona jeszcze biblioteke z jquery do validacji :D

0
dzek69 napisał(a):

Ty jedyne co musisz znaleźć to jak wykryć prawdziwy event od tego triggerowanego przez JS (zawsze możesz porównać console.log(e) jednego i drugiego)

pogrubilem to co gdybys zrobil to bys wiedzial ze jest tam taka zmienna is*** (zagwiazdkowalem by nie bylo latwo) ktora ustawiana jest tylko dla zdarzen odpalanych przez jquery submit :)

0

Tak, ale ja chce wiedziec kiedy wysylam formularz normaly, a nie ten w JS. Jak wysylam formularz z html to robie cos tam, jak nie to robie cos innego.

0

Jakies pomysly?

1

!!! rozwiazanie ponizej powinno byc dostepne tylko po wniesieniu datkow na jakeis schronisko lub dom dziecka !!!

potrzebujesz pomyslow czy rozwiazania, bo pomysly jak to rozwiazac dostales, wiec mam wrazenie ze oczekujesz rozwiazania bo inaczej nic z tym nie zrobisz, ehh

http://jsbin.com/fowisaxu/1/edit

0

Validacja i tak nie zatrzymuje wysylanie formularza...

Ta funkcja dziala w Chromie, ale nie w Firefox.

Uzywam biblioteki w jquery do walidacji formularza:
http://jqueryvalidation.org/validate/

0

ok, już śmiga wszystko. do kodu dorzuciłem jeszcze warunek z walidacją. Wszystko śmiga.
@szalonyfacet masz za istrigger() łapkę w górę. Dzięki za pomoc. O to chodziło. W ogóle nie mogłem tej funkcji znaleźć. Nie jest łatwo ją odnaleźć w necie. Dzięki jeszcze raz za pomoc. Jak się wie jak użyć funkcji, a się nie zna lub nie pamięta to już nie takie łatwe.

 
var form = $( "#myform" );
form.validate();
var bFromValid = form.valid();

if(bFromValid === true) { form.submit() } 
(...)
0

jak się pamięta link do googli, albo próbuje chociaż (przez całą stronę próbowaliśmy nakierować Ciebie na rozwiązanie) przeczytać posty na forum - to jest łatwe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1