Jump to content

"Technical error, unable to..." avec le panier en mode Ajax


numberxiii

Recommended Posts

Bonjour

 

Dans le panier, en mode Ajax, quand vous cliquez sur les iĉones +, - et corbeille, vous obtenez le message d'erreur suivant :

TECHNICAL ERROR: unable to save update quantity

Details:
Error thrown: [object XMLHttpRequest]
Text status: error


 

J'ai relevé plusieurs topics avec cette erreur, mais rarement une vrai solution est proposée.

 

Sur nos serveurs, nous avons constaté que le problème venait d'une erreur PHP qui était renvoyée au navigateur avant le contenu au format JSON.

Pensez donc à vérifier que l'option @ini_set('display_errors', 'on'); soit bien commentée dans le fichier config.inc.php et que dans la conf php, on n'affiche pas les erreurs (display_errors=off).

 

Quant à l'erreur PHP, elle est tout sauf claire :

[18-nov.-2011 11:53:52] PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: recursion detected in /home/www/classes/Tools.php on line 1901

On n'a rien trouvé de bien concret sur le net (cf. http://blog.jezmckean.com/php-bug-json_encode-misleading-warning-on-object-with-private-properties/)

 

Est-ce un bug connu dans Prestashop ? J'avoue n'avoir pas fouillé le bug tracker, j'ai uniquement trouvé ce bug http://forge.prestashop.com/browse/PSCFI-1511?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel qui est marqué comme résolu depuis Avril 2011...

 

++

 

PHP : 5.2.6

Prestashop : 1.4.5.1

Link to comment
Share on other sites

  • 2 weeks later...

Ceci peut être du aussi à une erreur js, sinon dans le fichier Tools, ligne 1901 vous avez bien:

 

/**
 * Convert an array to json string
 *
 * @param array $data
 * @return string json
 */
public static function jsonEncode($data)
{
 if (function_exists('json_encode'))
  return json_encode($data); // <-- LIGNE 1901
 else
 {
  include_once(_PS_TOOL_DIR_.'json/json.php');
  $pearJson = new Services_JSON();
  return $pearJson->encode($data);
 }
}

Link to comment
Share on other sites

  • 2 months later...

Pour corriger ce problème il faut aller dans le fichier config/config.inc.php et modifier la valeur de

@ini_set('display_errors', 'On');

 

pour

 

@ini_set('display_errors', 'Off');

 

En effet, l'erreur qui est affichée bloque le scripte AJAX qui modifie de la quantité d'un produit.

Link to comment
Share on other sites

  • 4 weeks later...

Bonsoir,

 

Idem pour moi sur un projet suite à une mise à jour de 1.1 à 1.4.6.2, sur un thème créé en 1.4.7.0.

 

Je pense que le masquage des erreurs n'est pas une solution puisque l'erreur ajax existe bien.

 

Est-ce que la team a une issue à ça ?

 

Ce phénomène est bizarre !

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Pour corriger ce problème il faut aller dans le fichier config/config.inc.php et modifier la valeur de

@ini_set('display_errors', 'On');

 

pour

 

@ini_set('display_errors', 'Off');

 

En effet, l'erreur qui est affichée bloque le scripte AJAX qui modifie de la quantité d'un produit.

Milles merci ... :)

Link to comment
Share on other sites

Bonjour,

J'ai le même problémes. j'ai essaie ceci:

@ini_set('display_errors', 'On');

 

pour

 

@ini_set('display_errors', 'Off');

Mais toujours même problémes.

pouvez vous m'aider je suis perdu et j'ai cela depuis l'instalation de la nouvelle version.

Mon site www.soldealannee.eu

Link to comment
Share on other sites

  • 4 weeks later...

Salut à tous,

En fouinant sur les forums anglais, j'ai trouvé une solution qui fonctionne !

Youpi !

Il faut ajouter une ligne de code dans le fichier cart-summary.js se trouvant sur votre thème.

Pour ma part voilà l'endroit où ce fichier se trouve :

 

/httpdocs/themes/softshop/js/cart-summary.js

 

J'ai choisi le thème Softshop

 

voilà les lignes de codes :

 

$(document).ready(function()

{

baseDir = 'http://www.monsite.fr;

$('.cart_quantity_up').unbind('click').click(function(){ upQuantity($(this).attr('id').replace('cart_quantity_up_', '')); return false; });

$('.cart_quantity_down').unbind('click').click(function(){ downQuantity($(this).attr('id').replace('cart_quantity_down_', '')); return false; });

$('.cart_quantity_delete' ).unbind('click').click(function(){ deletProductFromSummary($(this).attr('id')); return false; });

$('.cart_quantity_input').typeWatch({ highlight: true, wait: 600, captureLength: 0, callback: updateQty });

});

 

Et le tour est joué !

J'espère que cela aidera ceux qui comme moi ont un peu galéré.

Je suis sur la version 1.4.7.0 de Prestashop.

Je mets à jour vers la 1.4.8.2 ce soir. On verra si cela change quelque chose.

A+

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...