web-dev-qa-db-fra.com

exception non interceptée: mémoire insuffisante dans le processus Ajax

J'ai un problème. Je soumets un formulaire simple contenant de petites données. Lorsque j'ai coché l'onglet console, l'URL d'ajax semble fonctionner mais, une fois le fichier ajax traité, il signale une erreur et est redirigé vers ma page d'accueil. depuis l'onglet console j'ai ce weird error:

Exception non capturée: mémoire insuffisante

Dans mon ajax j'ai ce code simple seulement:

$("#add-comment").on('click', function() {

    var id = $('input[name=\'review_id\']').val();
    var customer_id = $('input[name=\'customer_id\']').val();
    var $comment = $('textarea[name=\'user_comment\']').val();

    var sample = "test";

    $.ajax({
        url: 'index.php?route=product/product/writeSubComment',
        type: 'post',
        dataType: 'json',
        data: { text: sample },
        beforeSend: function() {

        },
        success: function(data) {
            console.log(data.test);
        },
        error: function() {
            alert('ERROR!!!');
        }
    });

});

Dans mon contrôleur PHP j'ai cette fonction

public function writeSubComment() {

    $json = array();

    $json['test'] = $this->request->post['text'];

    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));

}
21
Jerielle

D'après votre description de la redirection vers votre page d'accueil, mais sans code dans vos sections de réponse ajax, je suppose que l'élément # add-comment est un bouton d'envoi dans votre formulaire. 

Si tel est le cas, votre formulaire peut être soumis en même temps que le code ajax est en cours d'exécution lorsque vous cliquez sur le bouton # add-comment submit. Cela expliquerait l'erreur de mémoire insuffisante car le javascript ajax est en cours de suppression pendant la redirection de la page.

Vous devez empêcher la soumission de votre formulaire et laisser les sections success () ou échec gérer l'étape suivante (c'est-à-dire actualiser la page, mettre à jour la zone de commentaires). Une façon de le faire serait de changer

$("#add-comment").on('click', function() {
     ... 

à

$('#add-comment').on('click', function(event){ 
    event.preventDefault();
    ...

ou changer le bouton d'envoi de

<button type="submit" ...>Add comment</button>

à

<button type="button" ...>Add comment</button>

ou changer la balise de formulaire comme ça

<form onsubmit="return false;">

C’est ma meilleure estimation des informations dont je dispose.

41
Drakes

J'avais un problème similaire lors du test de Firefox. Changer le type du bouton de submit à button a fonctionné pour moi. 

<button type="submit" ...>Add comment</button>

à

<button type="button" ...>Add comment</button>
5
George Albertyn

mon problème résolu en changeant

<button onClick="save_order_info_into_database()">Save</button>

dans 

<button type="button" onClick="save_order_info_into_database()">Save</button>

signifie en ajoutant type="button" résolu le mien ..

0

J'ai eu cette erreur dans la mise en œuvre d'une recherche via Ajax, lorsque j'ai essayé d'afficher le résultat dans HTML DOM et que j'ai résolu le problème comme suit:

$('..a place where the processed output Ajax request..').on('click', '#add-comment', function() {...});

0
Arthur Danko