Affiliate 60% provize (239,4 Kč VIP) - sex seznamka bez podvodů ZijemeNezavazne.cz
Zobrazují se odpovědi 1 až 8 z 8

Prosím o radu - Zpracování JSON response v jQuery a status v hlavičce

  1. Ahoj,

    můžete mi poradit, jak se správně technicky řeší následující problém?

    Formulář je třeba zvalidovat. Proto je pomocí jQuery odeslán POST požadavek do API - zde běží phpko. Vrátí se JSON odpověď, včetně hlavičky do které si dám všechno co potřebuji. Vracím si také číselný kód. Pro chybějící vyplněné pole je to třeba 422.

    Když ale přidám na straně API set_status_header($code) (třeba ten 422), tak mi to už jQuery na webu nevezme a konzole vypíše: 422 (Unprocessable Entity) a skončí to errorem javascriptu.

    Takže buď nemohu set_status_header() vůbec použít a nebo do něj musím cpát status 200, ale to mi nedává logicky smysl, protože v těle JSON odpovědi je správně ten status 422, protože něco není vyplněné. Obě ty možnosti fungují, ale podle mě by to mělo být nějak možné udělat.

    A nebo dělám spíše nesmysl a nedělá se to takhle.

    Poradíte prosím?

  2. Co se právě děje na Webtrhu?
  3. Předpokládám, že když na serveru nastavíš 422, tak ti API zpět nevrátí JSON, ale prostě vyhodí chybu 422. Pokud to chceš řešit na úrovni serveru, serverovou chybou, tak si musíš v daným postu nastavit nějakej chybovej callback.

    Veškerý ty success callbacky jQuery funkcí typu post a ajax, jsou předpokládám navázaný na odpověď 200.

    Nicméně doporučuju základní validaci (požadovaný položky, formát,... ) udělat ještě na úrovni JS a do API posílat až v případě, že to JS validací projde.

  4. API vrati vzdycky JSON odpoved, ale chtel jsem k tomu nastavit i status do hlavicky. Prave aby byla vzdycky odpoved zajistena v tomhle formatu a neprisla zpatky nejaka blbost. Bohuzel ten status v hlavicce javascript v prohlizeci nezere. Ten chce jen 200.

    Nechtel jsem to delat slozitejsi, to API neni samostatne bezici nekde na serveru. Je to PHP framework CodeIgniter a ta validace je metodou POST a validuje to cely PHPko. Tam jsou tyhle veci jako validacni pravidla strasne sikovne udelany.

  5. jQuery ajax funkce má fail callback, to by to mělo zpracovat ne?


  6. Mám to takhle:

    Kód:
    $(document).ready(function(){
    
        function clearValidErrors() {
            $('.form-valid-error').html('');
        }
        
        $('#contact-form').on('submit', function(event) {
            event.preventDefault();
            $alertBox = $('#msgFormContact');
            $form = $(this);
            $formId = '#' + $(this).attr('id');
            clearValidErrors();
            
            $.post('forms/contact', $(this).serialize(), function($response) {
                console.log($response);
    
                try {
                    
                    $.each($response.errors, function(field, error) {
                        $($formId + ' .field-' + field).html(error);
                    });
                    
                    $alertHTML = '<div class="alert alert-' + $response.alert.type + '">' + $response.alert.text + '</div>';
                    $alertBox.html($alertHTML);                
                    
                    if ($response.code === 200) {
                        $form.hide();
                    }
                }
                catch (e) {
                    alert('Chyba aplikace behem procesu.');                 
                }
            });        
        });
        
    });

  7. problém je, že akceptuješ fakt, že ajax bere success s kodem 422 v hlavičce

    což ajax bere jako error

    odchytavej errory skrz error funkci / definici v ajaxu

    https://api.jquery.com/ajaxError/

    tvůj pohled je ok, ale ajax to vidí jako error, takže do success nevleze, což je u tebe vše s $response

  8. Diky, upravim si to.

Hostujeme u Server powered by TELE3