Я опубликовал приложение ASP.NET MVC для Godaddy. У меня возникла проблема с вызовом Ajax, который должен возвращать объект JSON, который возвращает HTML-индекс страницы индекса моего сайта. Раньше у меня была проблема с ссылками на строку меню приложения, где они перенаправлялись на главную страницу моего сайта. Я смог решить проблему, добавив правило на web.config моего сайта, в котором исключена вложенная папка, содержащая приложение: <add input="{REQUEST_URI}" pattern="^/(codesnippetapp)" negate="true" />
Я проверил консоль dev в Chrome, и URL-адрес запроса неверен. URL должен быть http://www.mattdailey.net/codesnippetapp/Home/GetCodeData вместо этого http://www.mattdailey.net/Home/GetCodeDatajsonresult возвращает html not json
Вот вызов Ajax и функции JsonResult, извлекающие в JSON:
$.ajax({
url: '/Home/GetCodeData',
type: 'Post',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(selectedSnippetID),
success: function (data) {
if (data.success) {
$("#snippetcode").val(data.snippetCode);
} else {
alert('invalid ID' + data.success);
}
}
});
[HttpPost]
public JsonResult GetCodeData(int snippetID)
{
CodeSnippet returnedsnippet = db.CodeSnippets.FirstOrDefault(d => d.Id == snippetID);
if (returnedsnippet != null)
{
return Json(new { success = true, snippetCode = returnedsnippet.SnippetCode });
}
return Json(new { success = false });
}
Что мне нужно сделать, чтобы добавить в web.config моего приложения? Или мне нужно добавить код на web.config моего сайта?
UPDATE: Я попытался использовать метод GET, но получил внутреннюю ошибку сервера. Я переместил скрипт из внешнего файла в самом View с помощью бритвы код @section так:
@section Scripts
{
... jQuery code
}
Затем добавили это к _Layout.cshtml:
@RenderSection("Scripts", required: false)
Я добавить бритву @ Url.Action помощник к URL-адресу Ajax. Я также изменил способ публикации приложения в Godaddy, что, я думаю, тоже помогло. Я перешел из метода FTP в файловую систему. Затем я загрузил файлы вручную через FTP. Сейчас он работает.
Спасибо всем за помощь. Я написал свои шаги, надеясь, что это поможет кому-то еще в подобной ситуации.
Вам не нужно указывать 'JsonRequestBehaviour.AllowGet' для ** действия/вызова ** HttpPost ** (что делает OP). Это необходимо, только если вы возвращаете некоторый json из метода действия GET. – Shyju