为什么jQuery Ajax在Post之前发送Get请求?

时间:2017-08-10 12:23:43

标签: javascript jquery ajax asp.net-mvc devexpress

我想在ASP.Net Mvc中的按钮点击事件上传递我的组合框值,但它先发送get请求然后发送post请求。但我不想发送Get请求。

<script type="text/javascript">
    $(function () {
        $("#btnSave").click(function () {
            $.ajax({
                url: '@Url.Action("ExportButton")',
                type: 'POST',
                data: {
                    Parameter: mycombobox.GetValue()
                }
            });
            $('#btnSave').unbind('click');
            return false;
        });
    });
</script>

有什么想法吗?

编辑:

这是我的按钮:

@Html.DevExpress().Button(itemSettings =>
{
    itemSettings.Width = 150;
    itemSettings.Styles.Native = true;

    itemSettings.Name = "btnSave";
    itemSettings.Text = "Save";
    itemSettings.UseSubmitBehavior = false ;
    itemSettings.RouteValues = new { Controller = "Report", Action = "ExportButton"};
}
).GetHtml()

组合框:

@Html.DevExpress().ComboBox( itemSettings =>
{

    var properties = itemSettings.Properties;
    properties.Caption = "Save As ";
    properties.Items.Add("PDF", "PDF");
    properties.Items.Add("EXCEL", "EXCEL");
    properties.Items.Add("CSV", "CSV");
    itemSettings.Name = "mycombobox";

    properties.ValueType = typeof(string);
}
).GetHtml()

编辑2:

我意识到我的jquery发送&#34; get&#34;之前的方法&#34; Post&#34;方法

enter image description here

提前致谢。

4 个答案:

答案 0 :(得分:0)

你是否曾尝试过这种方式?

<script type="text/javascript">
    $(function () {
        $("#btnSave").unbind().click(function () {//unbind your click event here
            $.ajax({
                url: '@Url.Action("ExportButton")',
                type: 'POST',
                data: {
                    Parameter: mycombobox.GetValue()
                }
            });
        });
    });
</script>

答案 1 :(得分:0)

The docs表示点击是.on("click", handler)的快捷方式,建议使用.off("click")进行解除绑定,而不是unbind()。试一试!

答案 2 :(得分:0)

我认为您的Ajax没有运行两次。根据您包含的图像,这些请求来自不同的来源。第一个是文档中的GET,第二个是POST的Ajax调用,您可以看到它正在使用XHR。尝试将鼠标悬停在每条线上或点击每条线以获取更详细的信息。

答案 3 :(得分:0)

我终于解决了这个问题。

@Html.DevExpress().Button(itemSettings =>
{
    itemSettings.Width = 150;
    itemSettings.Styles.Native = true;

    itemSettings.Name = "btnSave";
    itemSettings.Text = "Save";
    itemSettings.UseSubmitBehavior = false ;
    itemSettings.RouteValues = new { Controller = "Report", Action = "ExportButton"}; // This line send Get request!
}
).GetHtml()

当我删除 itemSettings.RouteValues 行时,问题已解决。