Javascript 如何进行AJAX调用
我知道这个问题以前已经被回答过了,但不知何故,我无法在我的控制器内执行操作 这就是行动Javascript 如何进行AJAX调用,javascript,ajax,asp.net-mvc,razor,Javascript,Ajax,Asp.net Mvc,Razor,我知道这个问题以前已经被回答过了,但不知何故,我无法在我的控制器内执行操作 这就是行动 public JsonResult GetUpdate() { //get a list of valid elements var result = getContent(); return Json(result, JsonRequestBehavior.AllowGet); } 在我的脚本中: $.ajax({ type: 'GET', url: '@Url.A
public JsonResult GetUpdate()
{
//get a list of valid elements
var result = getContent();
return Json(result, JsonRequestBehavior.AllowGet);
}
在我的脚本中:
$.ajax({
type: 'GET',
url: '@Url.Action("GetUpdate")',
dataType: 'json',
success: function (constraints) {
alert("Application updated");
},
error: function (ex) {
alert('Failed to retrieve update.' + ex);
}
});
使用fiddler,我可以点击GetUpdate,但在浏览器中Ajax调用失败。我是否正确访问了URL
更新:
以下是错误消息:
“网络错误:404未找到-protocol://localhost:port/Controller/@Url.操作(%22GetUpdate%22)”
以下是通过小提琴演奏的作品:
protocol://localhost:port/Controller/GetUpdateRazor代码(C#和所有其他服务器端脚本)仅从.cshtml
文件执行,因此C#和Razor不能在.js
文件中使用。“@Url.Action(“GetUpdate”)”
不会生成Url,它只是一个字符串,因此您试图请求protocol://domain:port/Controller@Url.Action(“GetUpdate”)
不存在
以下是您可以做的:
- 在
文件中,您可以将生成的URL存储在JavaScript变量中,并将其传递给外部JS文件.cshtml
- 您可以将外部JavaScript移动到
文件中,以便使用Razor.cshtml
- 使用相对字符串路径,如
/Controller/GetUpdate
我推荐第一个。您可以尝试一下,其中的应用程序路径是protocol://localhost:port/ $.ajax({ type: 'GET', url: _ApplicationPath + "/ControllerName/GetUpdate", dataType: 'json', success: function (constraints) { alert("Application updated"); }, error: function (ex) { alert('Failed to retrieve update.' + ex); } }); $.ajax({ 键入:“GET”, url:_ApplicationPath+“/ControllerName/GetUpdate”, 数据类型:“json”, 成功:功能(约束){ 警报(“应用程序更新”); }, 错误:函数(ex){ 警报(“检索更新失败”。+ex); } });
尝试将URL设置为
GetUpdate
。另外,请注意相对路径。对不起,你是什么意思?我该怎么做?我以为@url.Action生成了相对路径?!我认为您丢失了控制器类名,根据错误消息(请参阅更新),在该类名中定义了GetUpdate
。情况并非如此。谢谢