javascript - MVC调用 Controller 方法而不打开新页面?

标签 javascript jquery asp.net-mvc

我的 Controller 类中有一个名为输出的方法。当我更改下拉列表中的选定项目时,我想向它发送一个参数,然后让它根据该参数运行特定的 SQL 查询,并让它返回结果。问题是,我不想在返回结果时打开新页面,我只想在警报中显示该查询的结果,而不是打开 URL 来运行该方法。这是我当前的javascript,该方法是一个名为output的ActionResult,并且有一个名为test的参数,它是一个字符串。

    <script src="../../Content/jquery.js"></script>
<script type="text/javascript">
    jQuery(function () {

        jQuery("#SelectedCentre").change(function () {
            var _this = jQuery(this);
            var selectedCentre = _this.val();
            window.location.href = "/Centres/output?test=" + selectedCentre;
        });
    });
</script>

最佳答案

您应该为此进行 ajax 调用:

jQuery(函数() {

    jQuery("#SelectedCentre").change(function () {
        var _this = jQuery(this);
        var selectedCentre = _this.val();
        jQuery.get("/Centres/output?test=" + selectedCentre, function(results){
         // do something with results here
        });
    });
});

编辑以回答评论中的问题:

在你的 Controller 中返回一个 json 类型的对象,如下所示:

 var data = new List<SelectListItem>
                           {
                               new SelectListItem
                                   {
                                       Text = "Test1",
                                       Value = "1"
                                   },
                                new SelectListItem
                                   {
                                       Text = "Test2",
                                       Value = "2"
                                   }
                           };
            return Json(data, JsonRequestBehavior.AllowGet);

并更新您的 jQuery 代码以处理 json 对象并创建选项:

$.getJSON("/Centres/output?test=" + selectedCentre, function (results) {
    $.each(results, function (i, item) {
        $("<option>", { text: item.Text, value: item.Value }).appendTo("#mySelect");
    });
});

关于javascript - MVC调用 Controller 方法而不打开新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393292/

相关文章:

javascript - 无法读取 null JS 的属性 'appendChild'

javascript - 滚动指令在 Angular JS 中不起作用

c# - MVC。由于某种原因,动态 css 样式为空

c# - 局部 View 每 5 秒在服务器上调用一个方法 - 页面本身不需要更改

c# - mvc c# 文件上传为字节数组

javascript - Firefox 扩展中的 LocalStorage

JavaScript 表单验证

javascript - 如何为 PayPal Express Checkout 配置 IPN?

jquery - 请帮我理解这行代码?

jQuery 效果在第一次单击按钮时不起作用,但从第二次单击开始它起作用