2011-04-04 18 views
5

Aquí es un botón:

<input type="button" value="add to cart" id="addToCart" /> 

y un evento de salto:

$("#addToCart").bind('click',function(){ 
       $.ajax({ 
        url: '/cartManager/add', 
        data:{ 
         pictureId: currentImageId, 
         printSize: $("#size option:selected").val(), 
         paperType: $("#paperType option:selected").val(), 
         quantity: 1 
        }, 
        success: function(){ 
         $("#modal").html("<h1>ОК</h1><p>Closing in a sec</p>").delay(1000); 
         $("#modal").overlay().close(); 

        } 
       }); 
      return false; 
      }); 

y todo funciona encontrar además una cosa que tipo de molestias, veo dos peticiones en la consola de desarrolladores de Chrome para esto:

  1. añadir/cartManager:
Request URL:http://127.0.0.1:8000/cartManager/add?pictureId=4&printSize=2&paperType=1&quantity=1 
Request Method:GET 
Status Code:301 MOVED PERMANENTLY 
  1. añadir/cartManager/agregar ?:
Request URL:http://127.0.0.1:8000/cartManager/add/?pictureId=4&printSize=2&paperType=1&quantity=1 
Request Method:GET 
Status Code:201 CREATED 

encabezados de solicitud de ambos son casi lo mismo, la única diferencia en las cabeceras de solicitud:

primero es cartManager/add? PictureId = ys o on y el segundo es cartManager/add /? pictureId - el '/' después/agregar

¿Hay algún problema con mi javascript?

+0

No entiendo por qué te molestaría, la situación en Libia me molesta. Este es el comportamiento esperado. – Anders

+0

¿Qué ocurre si agrega la URL final/a?url: '/ cartManager/add /' – fredrik

Respuesta

9

No hay nada malo per se, sino que habría que añadir la barra al final /cartManager/add mismo.

Lo que sucede es que el servidor web está enviando un redireccionamiento 301 al cliente AJAX con una nueva URL, por lo que emite una nueva solicitud a la URL correcta (es decir, con la barra al final).

1
Status Code:301 MOVED PERMANENTLY 

No, su JavaScript no está causando esto. Parece que su servidor está redirigiendo /cartManager/add a /cartManager/add/. Como el servidor quiere una barra inclinada, ¿por qué no agregarla y evitar la redirección?

+0

yup, tonto yo - debería haber pensado en esto en primer lugar. – abolotnov

1

El encabezado tiene las pistas que necesita.

Su solicitud a '/ cartManager/add' se reenvía a '/ cartManager/add /' (observe la barra inclinada final).

reemplazar su llamada AJAX con

$.ajax({ 
        url: '/cartManager/add/', 
        data:{ 
         pictureId: currentImageId, 
         printSize: $("#size option:selected").val(), 
         paperType: $("#paperType option:selected").val(), 
         quantity: 1 
        }, 
        success: function(){ 
         $("#modal").html("<h1>ОК</h1><p>Closing in a sec</p>").delay(1000); 
         $("#modal").overlay().close(); 

        } 
       }); 
Cuestiones relacionadas