jQuery AJAX starea erorii cererii 0

Am fost în curs de dezvoltare o aplicație la nivel local și am alerga în probleme pe serverul real.

De fiecare dată când trimit o solicitare AJAX cu jQuery, îmi dă o eroare cu status: 0 și statusText: 'error' .

Inspectorul Chrome nu arată nici măcar un cod de răspuns pentru solicitare, ci doar spune că a eșuat.

Când o inspectez mai aproape, observ că toate datele au fost trimise, iar fișierul PHP a procesat-o. De exemplu, în cererea de mai jos, utilizatorul a fost într-adevăr creat. Codul rău de răspuns împiedică executarea altor cereri (deoarece acestea depind de un răspuns "de succes").

Iată o solicitare de eșantion:

var cct = $.cookie('ttc_csrf_cookie');//csrf protection
var sUrl = "<?= base_url(); ?>user/create/";
var serialized = { 
    name: me.name, 
    email: me.email, 
    oauth_provider: 'facebook', 
    oauth_uid: me.id,
    ttc_csrf_token: cct
};
$.ajax({
    url: sUrl,
    type: "POST",
    data: serialized,
    error: function(someStuffHere) {
            //* THIS CODE RUNS. SHOWS ERROR STATUS: 0 */
    },
    success: function(user_id) {
        //******** THIS HERE NEVER RUNS ***********///    
    }
});

Iată codul PHP corespunzător:

public function create() {
    if($this->input->post()) {
        $user['name'] = $this->input->post('name');
        $user['email'] = $this->input->post('email');
        $user['oauth_provider'] = $this->input->post('oauth_provider');
        $user['oauth_uid'] = $this->input->post('oauth_uid');
        $user['last_activity'] = date('Y-m-d H:i:s');

        $user_id = $this->Users->create_user($user);
        $this->session->set_userdata('user_id', $user_id);
        echo $user_id;
    }
}

Aceste două fragmente sunt doar un exemplu. Toate solicitările AJAX nu vor funcționa în secțiunea live.

Ce ar putea fi posibil? Mulțumiri!

UPDATE: I've narrowed it down and the issue occurs when echo'ing a result. When I comment out the echo, no error is thrown (but, of course, no result is sent).

2
Așa că am redus-o și problema apare atunci când se creează un rezultat. Atunci când am comentat ecoul, nu este aruncată nicio eroare (dar, bineînțeles, nu este trimis nici un rezultat).
adăugat autor Daniel O'Connor, sursa
Vrei să spui un buton de intrare? Nu există niciunul. Securitatea primește datele foarte bine, dar aruncă eroarea atunci când va reda un rezultat (chiar dacă faci echo true sau echo json_encode (true) ).
adăugat autor Daniel O'Connor, sursa
Domeniul este același? dacă accesați webservice din alt domeniu, atunci trebuie să faceți CrossDomain: true în $ .axax
adăugat autor dhinesh, sursa
Ce tip de buton de trimitere este?
adăugat autor dezso, sursa
Doar pentru moment a elimina câmpul de eroare de la ajax apel și a vedea ce se întâmplă în console.log .... eroarea ar fi suficient de clar pentru a vă oferi o informație ......
adăugat autor Ankur Verma, sursa

1 răspunsuri

Se pare că problema a fost cauzată de opțiunea compress_output din CodeIgniter. Când este setat la true, codul echo nu funcționează. Multumesc tuturor celor care au încercat să vă ajute!

1
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com