【问题标题】:Ajax call not recognizing URLAjax 调用无法识别 URL
【发布时间】:2021-01-31 23:42:48
【问题描述】:

我正在尝试在我的 Razor 页面中进行 ajax 调用。截至目前,我的控制器方法应该返回字符串“ajax return”,然后将其呈现给适当的 div 标签。这只是一个测试。我无法让 ajax 调用在后面的代码中点击我的方法。提前感谢您的任何意见!

ajax:

function test() {
    $.ajax({
        type: "GET",
        url: "@Url.Action("AjaxThing", "Posts")";
        data: "Andrew",
        success: function (response) {
            $("#test").html(response.data);
        }
    });
}

$("#clickMe").on("click", test);

cshtml:

<div id="test">
</div>
<div class="form-group">
    <button id="clickMe" class="btn">Click me</button>
</div>

后面的代码:

public string AjaxThing() 
{
    return "ajax return";
}

解决方案布局:

solution

【问题讨论】:

  • 嗯……你根本没有调用test函数……
  • 天哪,我在帖子中意外留下了一行。现在更新了。
  • 您的开发者工具日志中写了什么?
  • url: "@Url.Action("AjaxThing", "Posts")"; - 这个语法看起来不正确,正如您在突出显示时看到的那样。也许应该是url: @Url.Action("AjaxThing", "Posts");
  • @Xerillio 我刚试过,没有效果。

标签: c# ajax asp.net-mvc razor-pages


【解决方案1】:
[HttpGet]
public string AjaxThing() 
{
    return Json("ajax return",JsonRequestBehavior.AllowGet);
}

请使用如上所示更改功能,它将起作用

【讨论】:

  • 嗯,所以它实际上不允许我说。我收到错误Json doesnt exist in the current context。这是因为我试图从控制器中“不”调用此方法吗?我将所有这些都放在剃须刀页面后面的代码中。
  • 在您的 VS 项目上安装包 Newtonsoft.Json -Version 12.0.3。它将解决 Json 的问题
【解决方案2】:
function test() {

         $.ajax({
                type: "GET",
                contentType: "application/x-www-form-urlencoded; charset=utf-8",
                url: '/Posts/AjaxThing',
                data: 'Andrew',
                success: function (response) {
                    result = response;
                     $("#test").html(response);
                },
                error: function () {
                }
            });          
    }
[HttpGet]
        public ActionResult AjaxThing()
        {
            return Json("ajax return", JsonRequestBehavior.AllowGet);
        }

【讨论】:

    【解决方案3】:

    想通了。它没有正确发布的原因是我的控制器设置错误。我没有从“Controller”继承,而是更新为“ControllerBase”,它允许帖子通过。我还更新了我的 ajax 调用,如下所示:

    $(document).ready(function () {
        $('#@formId button').on("click", function (e) {
    
            var CommentVM = {
                PostId: parseInt($("#@postId").val()),
                Content: $("#@commentId").val()
            }
    
            $.ajax({
                contentType: "application/json; charset=utf-8",
                type: "POST",
                url: "/PostComment",
                data: JSON.stringify(CommentVM),
                dataType: "json",
                async: true,
                success: function (data) {
                    console.log("Success");
                },
                error: function (hxr, status, error) {
                    console.log("ERROR");
                }
            });
            e.preventDefault();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 2016-07-18
      • 2019-11-18
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2018-12-10
      相关资源
      最近更新 更多