Cuando realizo una solicitud ajax usando JQuery, la URL relativa no incluye la última parte de la URL. Tengo las siguientes URL:
/Question/100 /Question/100/AddCommentEstoy tratando de enviar una solicitud ajax desde la primera página a la segunda página. El jquery que estoy usando es:
$.ajax({ url: 'AddComment', type: 'POST' });Esta solicitud ajax va a la url
/Question/AddComment Para solucionar el problema, solo puedo hacer window.location.href + "/AddComment" . Sin embargo, me preguntaba por qué exactamente la URL relativa no incluye el valor de Id. ¿También hay alguna manera de resolver este problema sin usar window.location.href?
Esto no tiene nada que ver con JavaScript o jQuery, es solo cómo los navegadores interpretan las URL relativas. Y por una buena razón.
El navegador no sabe ni le importa cuál es el "Id" en la URL. Solo sabe que está solicitando un recurso ( 100 ) al final de una ruta ( /Question/ ). Cualquier URL relativa a ese recurso se solicitará en relación con esa misma ruta. Por lo tanto, solicitar solo AddComment hará que el navegador busque AddComment en la ruta /Question/ .
Considere lo que sucedería si este no fuera el caso. ¿Qué pasa si estás en la página index.html y haces clic en un enlace a about.html ? ¿Esperaría o desearía que el navegador navegara a /index.html/about.html ? Por supuesto que no.
Solo necesita especificar la URL correcta. Si puede escribir la ruta absoluta completa, genial. Si puede generarlo dinámicamente desde el código del lado del servidor (como el ayudante @Url.Route en ASP.NET MVC, por ejemplo), también genial. Si puede compilarlo dinámicamente en JavaScript, ya sea en función de valores base conocidos o examinando la URL actual, es probable que sea igual de bueno siempre que cubra cualquier caso extremo que pueda encontrar y demás. Pero en última instancia, debe especificar la URL.