Pregunta

Trabajo en el proyecto VS2010, ASP.NET MVC 2. El proyecto se completó, queda por revelarse en el IIS, pero surgen los problemas. La solicitud de AJAX que llama al método del controlador no funciona en IIS, pero funciona en vs. No sé si algo debe incluirse especialmente para el apoyo de AJAX. ¿Necesito ayuda y cómo reenviar la solicitud y la URL se interpreta como la solicitud MVC con parámetros? Yo uso IIS 5.

¿Fue útil?

Solución

Has codificado las URL en tu JavaScript, ¿no?

$.post('/home/index', function(result) {

});

En lugar de usar ayudantes de URL:

$.post('<%= Url.Action("index", "home") %>', function(result) {

});

La razón por la que su código no funciona cuando implementó su aplicación en IIS es porque ahora tiene un directorio virtual, así: http://example.com/myapplication/home/index. Si codifica la URL en lugar de usar ayudantes de URL para generarlo, termina con una solicitud de AJAX para http://example.com/home/index Lo que por supuesto no funciona, ya que le falta el nombre de la aplicación.

Cuando trabaja localmente, no hay directorio virtual si está utilizando el servidor web incorporado de Visual Studio y la URL se ve así: http://locahost:1234/home/index.

Personalmente, lo que le recomendaría es simplemente usar ayudantes HTML para generar elementos DOM como <form> y <a> y luego a Jaxififyes discretamente.

Por ejemplo, podría tener el siguiente formulario:

<% using (Html.BeginForm("SomeAction", "SomeController")) { %>
    ... some input fields
<% } %>

que podrías ajaxificar así:

$(function() {
    $('form').submit(function() {
        $.post(this.action, $(this).serialize(), function(result) {
            // TODO: process the results
        });
        return false;
    });
});

¿Ves cómo ya no codificamos las URL en nuestros archivos JavaScript? Ahora todo funcionará sin importar dónde aloje su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top