Tengo un estimador de envío que estoy tratando de restablecer a través de ajax en cualquier cambio de carrito.
Tengo call y ajax funcionando bien en todo lo de la pagina menos en el estimado de envio.
Tengo estos como valores ocultos:
<input type="hidden" id="sendto" name="shippingSento" value="57720"> <input type="hidden" id="cart_street_address" name="shippingCart_street_address" value="3805 here Ave "> <input type="hidden" id="cart_zip_code" name="shippingCart_zip_code" value="33351"> <input type="hidden" id="cart_state" name="shippingCart_state" value="FL"> <input type="hidden" id="address_id" name="shippingSento" value="57720">
Mi llamada javascript ajax es:
<script> function update_shipping_estimate(){ var sendto = document.getElementById('sendto').value; var cart_state = document.getElementById('cart_state').value; var cart_zip_code = document.getElementById('cart_zip_code').value; var cart_street_address = document.getElementById('cart_street_address').value; var address_id = document.getElementById('address_id').value; $.ajax({ url: 'ajax_shipping_estimate.php', dataType: 'html', data: {cart_street_address, cart_state, cart_zip_code, sendto, address_id}, success: function (result) { ; $('#shipping_estimate').html(result); }, error: function(xhr, status, error) { alert(xhr.responseText); } }); }; </script>
Para la prueba de errores, estoy generando los campos de datos $_POST, pero la llamada ajax no los envía y, por lo tanto, no hay actualizaciones en los datos de envío.
Mi carga de página inicial, la estimación es correcta, pero en cualquier cambio de página, el ajax se activa y los resultados devueltos son incorrectos debido a que no se enviaron los datos publicados.
Estoy verificando esto devolviendo los datos de la llamada ajax:
$shipping_estimate .= 'address id = ' . $_POST['address_id']; $shipping_estimate .= '<br>'; $shipping_estimate .= 'sendto = ' . $_POST['sendto']; $shipping_estimate .= '<br>'; $shipping_estimate .= 'cart_zip_code = ' . $_POST['cart_zip_code']; $shipping_estimate .= '<br>'; $shipping_estimate .= 'cart_street_address = ' . $_POST['cart_street_address']; $shipping_estimate .= '<br>'; $shipping_estimate .= 'cart_state = ' . $_POST['cart_state']; $shipping_estimate .= '<br>';
Que no contienen los valores ocultos después de la carga de la página inicial y una llamada ajax para actualizar la estimación de envío. No estoy seguro de por qué mis valores ocultos están todos vacíos.
Esto solucionó el problema:
function update_shipping_estimate(){ var sendto = parseInt(document.getElementById('sendto').value); var cart_state = document.getElementById('cart_state').value; var cart_zip_code = document.getElementById('cart_zip_code').value; var cart_street_address = document.getElementById('cart_street_address').value; var address_id = parseInt(document.getElementById('address_id').value); $.ajax({ url: 'ajax_shipping_estimate.php', dataType: 'html', method: "post", data: {cart_street_address, cart_state, cart_zip_code, sendto, address_id}, success: function (result) { $('#shipping_estimate').html(result); }, error: function(xhr, status, error) { alert(xhr.responseText); } }); };