我向Godaddy发布了一个ASP.NET MVC应用程序。我有一个Ajax调用的问题,它应该返回一个JSON对象,它返回我网站的索引页面的HTML。我以前在应用程序的菜单栏链接中遇到问题,他们将重定向到我网站的主页面。我能够通过向我网站的web.config添加规则来解决问题,该规则排除了包含应用程序的子文件夹:<add input="{REQUEST_URI}" pattern="^/(codesnippetapp)" negate="true" />
我检查了Chrome中的开发控制台并且请求网址错误。该网址应为http://www.mattdailey.net/codesnippetapp/Home/GetCodeData,而不是http://www.mattdailey.net/Home/GetCodeData
这是Ajax调用和检索JSON的JsonResult函数:
$.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?
更新: 我尝试使用GET方法但出现内部服务器错误。我使用razor @section代码将脚本从外部文件移动到View本身,如下所示:
@section Scripts
{
... jQuery code
}
然后将其添加到_Layout.cshtml:
@RenderSection("Scripts", required: false)
我确实将剃须刀@ Url.Action助手添加到了Ajax网址。我也改变了将应用程序发布到Godaddy的方式,我认为也是如此。我从FTP方法改为Filesystem。然后我通过FTP手动上传文件。它现在正在运作。
感谢大家的帮助。我写下了我的步骤,希望这能帮助处于类似情况的其他人。
答案 0 :(得分:0)
/
会将其作为您网站的根目录(不是您下的应用>)。
使用Url.Action
辅助方法生成操作方法的路径。
url: '@Url.Action("GetCodeData","Home")',
如果你的javascript在剃刀视图中,这应该有用。如果您的代码在外部js文件中,请在剃刀视图中调用此方法并将其分配给变量并在js文件中使用它,如this post的第二部分所述
答案 1 :(得分:0)
使用 JsonRequestBehavior.AllowGet
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 },JsonRequestBehavior.AllowGet);
}
return Json(new { success = false },JsonRequestBehavior.AllowGet);
}
答案 2 :(得分:0)
当你试图将Json返回给客户端时,这应该是一个GET操作。
$.ajax({
url: '/Home/GetCodeData',
type: 'GET',
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);
}
}
});
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 }, JsonRequestBehavior.AllowGet);
}
return Json(new { success = false }, JsonRequestBehavior.AllowGet);
}