Jquery MVC4 Ajax请求代码404
每当我在浏览器中检查控制台时,它都会说找不到代码为404的URL。它执行post的URL是Jquery MVC4 Ajax请求代码404,jquery,ajax,asp.net-mvc-4,json.net,Jquery,Ajax,Asp.net Mvc 4,Json.net,每当我在浏览器中检查控制台时,它都会说找不到代码为404的URL。它执行post的URL是http://localhost:54473/Date/GetArticleName 日期控制器.cs中的方法 public JsonResult GetArticleName(long barcode) { ArticleDbContext artdb = new ArticleDbContext(); Article art = (Article) artdb.Articles.Wher
http://localhost:54473/Date/GetArticleName
日期控制器.cs中的方法
public JsonResult GetArticleName(long barcode)
{
ArticleDbContext artdb = new ArticleDbContext();
Article art = (Article) artdb.Articles.Where(a => a.Barcode == barcode).First();
return Json(art.Name, JsonRequestBehavior.AllowGet);
}
Create.schtml
@model DatoCheckerMvc.Models.Date
@{
ViewBag.Title = "Opret ny";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Opret</h2>
@using (Html.BeginForm("Create", "Date", FormMethod.Post, new { }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<script type="text/javascript">
function validationFunction() {
var isValid = true;
if (!$("#ArticleBarcode").val() || $("#ArticleBarcode").val() == "" || $("#ArticleBarcode").val().match("^\d+$")) {
isValid = false;
}
if (!$("#RunDate").val() || $("#RunDate").val() == "" || $("#RunDate").val().match("((?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])")) {
isValid = false;
}
if (isValid) {
return true;
}
else {
return false;
}
}
$(document).ready(function () {
$(window).keydown(function (event) {
if ((event.keyCode == 13) && (validationFunction() == false)) {
event.preventDefault();
return false;
}
});
$("#ArticleBarcode").change(function (event) {
$.ajax({ //This function is the call to the method.
url: '@Url.Action("GetArticleName", "Date")',
data: { barcode: $("#ArticleBarcode").val() },
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (result) {
var divInsert = document.getElementById("JsonResponse");
divInsert.innerHTML = result;
},
error: function () {
alert("error");
}
});
});
});
</script>
<fieldset>
<legend>Dato</legend>
<div class="row">
<div class="form-group col-md-4">
<div class="editor-label">
@Html.LabelFor(model => model.ArticleBarcode)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.ArticleBarcode, null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ArticleBarcode)
</div>
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<div class="editor-label">
<label for="ArticleName">Varenavn</label>
</div>
<div class="editor-field">
<div id="ArticleName">
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<div class="editor-label">
@Html.LabelFor(model => model.RunDate)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.RunDate, null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.RunDate)
</div>
</div>
</div>
<p>
<input class="btn btn-default" type="submit" value="Opret" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Tilbage", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@model DatoCheckerMvc.Models.Date
@{
ViewBag.Title=“Opret ny”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
奥普拉特
@使用(Html.BeginForm(“Create”,“Date”,FormMethod.Post,new{}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
函数验证函数(){
var isValid=true;
如果(!$(“#ArticleBarcode”).val()|$(“#ArticleBarcode”).val()==”|$(“#ArticleBarcode”).val().match(“^\d+$”){
isValid=false;
}
若有(!美元(“35;运行日期)以及(“35;运行日期”运行日期)的(((!!)以及((((!)以及(((“#运行日期”)以及(((((“[运行日期)以及((“[运行日期)运行日期))的((((((::::(:([除了除了除了除了除了除了除了除了除了运行日期)运行日期)之外,;;;;;;;;;)若(((((((“[[[除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了(?![\\d])){
isValid=false;
}
如果(有效){
返回true;
}
否则{
返回false;
}
}
$(文档).ready(函数(){
$(窗口).keydown(函数(事件){
if((event.keyCode==13)&&(validationFunction()==false)){
event.preventDefault();
返回false;
}
});
$(“#ArticleBarcode”)。更改(功能(事件){
$.ajax({//此函数是对方法的调用。
url:'@url.Action(“GetArticleName”,“Date”),
数据:{条形码:$(“#ArticleBarcode”).val()},
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
成功:功能(结果){
var divInsert=document.getElementById(“JsonResponse”);
divInsert.innerHTML=结果;
},
错误:函数(){
警报(“错误”);
}
});
});
});
达托
@LabelFor(model=>model.ArticleBarcode)
@Html.TextBoxFor(model=>model.ArticleBarcode,null,新{@class=“form control”})
@Html.ValidationMessageFor(model=>model.ArticleBarcode)
瓦雷纳夫
@LabelFor(model=>model.RunDate)
@TextBoxFor(model=>model.RunDate,null,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.RunDate)
}
@ActionLink(“Tilbage”,“Index”)
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
我有:
- 确保JQuery在顶部加载
- 尝试改用
$.getJson()
- 在方法中插入断点,查看它是否执行(未执行)
如何解决我的问题?尝试使用
HttpPost
属性标记您的方法:
[HttpPost]
public JsonResult GetArticleName(long barcode) {
...
}
如果没有该属性,则假定它是一个GET
请求
另外,如果它将是一个
POST
请求,则不需要JsonRequestBehavior.AllowGet
。这并没有解决问题,但我发现它在JQuery的这一行中抛出错误:xhr.send((s.hascantent&s.data)| null)代码>(jquery-1.9.0.js第8475行)这不是jquery错误。您正在向不存在的资源发出POST请求。添加属性后,您重新编译了吗?没有,但现在我重新编译(没有编辑任何内容),它只返回错误代码500。我想象添加HttpPost
完成了操作,现在您的500错误发生在该方法的某个地方。检查错误日志以查看引发异常的位置。