jquery - 如何使用 AJAX 将字符串传递给 Controller

标签 jquery asp.net ajax asp.net-mvc razor

我似乎无法完成按下按钮时将字符串传递给 Controller ​​这一非常简单的任务。接收到的数据始终为空。有人可以告诉我我做错了什么吗?

表格:

<form>
    <div class="form-group">
        <label for="ProcessName" class="control-control">Process Name</label>
        <input id="ProcessName" class="form-control" placeholder="Choose process name">
        <small id="subtitle" class="form-text text-muted">Text under input field.</small>
    </div>
    <button type="submit" class="btn btn-primary" id="addElement">Submit</button>
</form>

Javascript:

$(function () {
    $("#addElement").click(function () {
        var processName = $("#ProcessName").val();

        // I've tried this method
        $.post('@Url.Action("AddProcessName")', processName, function (data, status) {
                    alert(data)
        });

       // And also this one, but both of them don't work.
       // I did not try them at the same time, of course
        $.ajax({
            type: "POST",
            url: '@Url.Action("AddProcessName")',
            data: processName,
            dataType: 'text',
            success: function (response) {
                alert(response)
                };
        });
    });
});

服务器端:

[HttpPost]
public IActionResult AddProcessName(string data)
{
    pm.ID = 1;
    pm.Name = data; // I put a breakpoint here to check the value of 'data'
    return Content(pm.Name);
}

最佳答案

您告诉您的操作需要一个名为 data 的变量,但您并未发送该变量。您需要将 jQuery AJAX 请求的 data 属性更改为:

data: { data: processName },

我还建议您从 Action 返回 JSON,因为由于空格可能会或可能不会被解释,纯文本充其量也可能是片状的。试试这个:

$("#addElement").click(function () {
  $.ajax({
    type: "POST",
    url: '@Url.Action("AddProcessName")',
    data: { 
      data: $("#ProcessName").val() 
    },
    dataType: 'json',
    success: function(response) {
      // use console.log for debugging, and access the property of the deserialised object
      console.log(response.Name); 
    };
  });
});
[HttpPost]
public IActionResult AddProcessName(string data)
{
    pm.ID = 1;
    pm.Name = data;
    return Json(new { Name = pm.Name });
    // or just:
    // return Json(pm);
}

关于jquery - 如何使用 AJAX 将字符串传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062105/

相关文章:

javascript - 来自 Mozilla.com 网站的倒置标签,如 tabzilla

javascript - 每次通过都向 DOM 添加增加的计数

c# - 如何将输出 HTML 标签 <b></b> 更改为 <strong></strong>?

javascript - Django 模型表单集和 Ajax

jQuery Ajax 方法不返回 XHR 对象

javascript - 如何在此循环中使用 jQuery 添加类

javascript - 选择单选按钮时启用单击按钮

asp.net - 更新查询似乎删除了备注字段

c# - 每个数据行的重复值

ajax - 返回自动下载JQuery Ajax调用