IIS5 для поддержки AJAX - PullRequest
       18

IIS5 для поддержки AJAX

1 голос
/ 24 июля 2011

Я работаю в VS2010, проект ASP.NET MVC 2.Проект был завершен, его еще предстоит раскрыть в ИРИО, но проблемы возникают.AJAX-запрос, который вызывает метод контроллера, не работает на IIS, но работает в VS.Я не знаю, должно ли что-то быть включено специально для поддержки IJ AJAX?Мне нужна помощь, а как переслать запрос и URL интерпретируется как запрос MVC с параметрами?Я использую IIS 5.

1 Ответ

1 голос
/ 24 июля 2011

Вы жестко закодировали URL-адреса в своем JavaScript, не так ли:

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

});

вместо использования URL-помощников:

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

});

Причина, по которой ваш код не работает при развертывании приложения в IIS, заключается в том, что теперь у вас есть виртуальный каталог, например: http://example.com/myapplication/home/index. Если вы жестко закодировали URL-адрес вместо использования URL-помощников для его генерации, вы получите AJAX-запрос к http://example.com/home/index, который, конечно, не работает, поскольку вы пропускаете имя приложения.

При локальной работе виртуальный каталог отсутствует, если вы используете встроенный веб-сервер Visual Studio и URL выглядит следующим образом: http://locahost:1234/home/index.

Лично я бы порекомендовал вам просто использовать HTML-помощники для создания элементов DOM, таких как <form> и <a>, а затем ненавязчиво AJAXify их.

Например, вы можете иметь следующую форму:

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

который вы могли бы AJAXify следующим образом:

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

Посмотрите, как мы больше не программируем URL-адреса в наших файлах javascript? Теперь все будет работать независимо от того, где вы разместите свое приложение.

...