Tengo el siguiente código Jquery que envía una solicitud ajax a add-to-cart.php.
var productData = { "product_id": s_product_id, "product_opties": s_product_opties, "product_aantal": s_product_aantal } productData = JSON.stringify(productData); $.ajax({ url: 'inc/add-to-cart.php', dataType: "json", contentType: "application/json; charset=utf-8", data: productData, type: 'POST', success: function(response) { alert(response.d); }, error: function(e){ console.log(e); } });Agregar al carrito.php:
<?php print $_POST['product_id']; ?>Tengo dos problemas, el primero es que el $_POST['product_id'] no existe cuando lo solicito y, en segundo lugar, cuando la respuesta de ajax regresa, va directamente al error: función y no función de éxito.
El registro de la consola dice:
[object Object]{readyState: 4, responseText: "<br /> <b>N...", status: 200, statusText: "OK"}Si el estado es OK porque salta al error: parte?
¡Gracias!
Prueba con:
... var productData = { 'product_id': s_product_id, 'product_opties': product_opties, 'product_aantal': product_aantal, } $.ajax({ url: 'inc/add-to-cart.php', dataType: 'json', data: productData, type: 'POST', success: function(response) { console.log(response.d); }, error: function(e){ console.log(e); } }); ... Omitiendo el parámetro contentType de AJAX y la parte en la que encadena su JSON, eso ya está listo para enviarse a su url , por lo que no es necesario.
eliminar la línea
productData = JSON.stringify(productData); Entonces no devuelva HTML <br> ... desde add_to_cart.php , debe devolver una cadena JSON creada por la función PHP json_encode y NADA MÁS.
Como en:
<?php echo json_encode(array('d' => 'value of d'));Primero: el código de estado del servidor web es 200 porque entregó un sitio existente. Segundo: no necesita encadenar el objeto json por sí mismo