Никогда не используйте такие жесткие URL-адреса, потому что при развертывании приложения к вашим URL-адресам может быть добавлен виртуальный каталог:
url: '/SearchAjax/SearchAccount',
Всегда используйте помощники Url при работе с URL-адресами:
url: '<%= Url.Action("SearchAccount", "SearchAjax") %>',
Итак, вот как я бы провел рефакторинг вашего кода:
function PerformLookup() {
var _accountNumber = $('#accountNumber').val();
$.ajax({
url: '<%= Url.Action("SearchAccount", "SearchAjax") %>',
type: 'POST',
data: JSON.stringify({ _accountNumber: _accountNumber }),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
UpdateTable(data);
},
error: function () {
alert('An error occurred while performing the search.');
}
});
return false;
}
или если эта функция PerformLookup
вызывается при нажатии какой-либо ссылки, я бы создал ссылку с помощью помощника HTML:
<%= Html.ActionLink(
"Perform search",
"SearchAccount",
"SearchAjax",
null,
new { id = "search" }
) %>
, а затем просто AJAXify:
$(function() {
$('#search').click(function() {
var _accountNumber = $('#accountNumber').val();
$.ajax({
url: this.href,
type: 'POST',
// Probably no need to send JSON request
// so I've replaced it with a standard
// application/x-www-form-urlencoded POST request
data: { _accountNumber: _accountNumber },
dataType: 'json',
success: function (data) {
UpdateTable(data);
},
error: function () {
alert('An error occurred while performing the search.');
}
});
return false;
});
});
И, наконец, я настоятельно рекомендую вам использовать FireBug , который является отличным инструментом, позволяющим устранять проблемы такого рода, так какпоказывает все запросы AJAX и что происходит между клиентом и сервером.