IIS5 для поддержки Ajax
-
25-10-2019 - |
Вопрос
Я работаю в проекте VS2010, ASP.NET MVC 2. Проект был завершен, его еще предстоит выявить в IIS, но возникают проблемы. Ajax запрос, чтобы вызовы метод контроллера не работают на IIS, но работают в Vs. Я не знаю, должно ли что -то быть включено особенно для поддержки AJAX IIS? Мне нужна помощь и как переслать запрос, а URL -адрес интерпретируется как запрос MVC с параметрами? Я использую IIS 5.
Решение
В своем JavaScript вам жестко закодировали URL -адреса, не так:
$.post('/home/index', function(result) {
});
Вместо использования помощников URL:
$.post('<%= Url.Action("index", "home") %>', function(result) {
});
Причина, по которой ваш код не работает, когда вы развернули свое приложение в IIS, заключается в том, что у вас теперь есть виртуальный каталог, например, так: http://example.com/myapplication/home/index
. Анкет Если вы жесткий код URL вместо использования помощников URL http://example.com/home/index
Что, конечно, не работает, так как вы упускаете имя приложения.
При работе локально нет виртуального каталога, если вы используете встроенный веб-сервер Visual Studio, и URL выглядит следующим образом: http://locahost:1234/home/index
.
Лично я бы порекомендовал вас просто использовать помощников HTML для генерации элементов DOM, таких как <form>
а также <a>
И тогда ненавязчиво их джаксифицируют их.
Например, у вас может быть следующая форма:
<% using (Html.BeginForm("SomeAction", "SomeController")) { %>
... some input fields
<% } %>
Что можно было бы так:
$(function() {
$('form').submit(function() {
$.post(this.action, $(this).serialize(), function(result) {
// TODO: process the results
});
return false;
});
});
Посмотрите, как мы больше не в твердом кодировке в наших файлах JavaScript? Теперь все будет работать независимо от того, где вы принимаете приложение.