Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何进行AJAX调用_Javascript_Ajax_Asp.net Mvc_Razor - Fatal编程技术网

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”)
不存在

以下是您可以做的:

  • .cshtml
    文件中,您可以将生成的URL存储在JavaScript变量中,并将其传递给外部JS文件
  • 您可以将外部JavaScript移动到
    .cshtml
    文件中,以便使用Razor
  • 使用相对字符串路径,如
    /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
。情况并非如此。谢谢