单击按钮后,Ajax POST不起作用

时间:2017-07-18 12:10:42

标签: javascript jquery ajax asp.net-mvc

我的问题是按下按钮后没有动作。按钮下挂钩AJAX功能。 请提示我有错误//错误。

我的代码:

控制器:

    [HttpPost]
    public ActionResult InsertCodesToDB(string name)
    {
        cl.InsertCodesToDB(name);
        fl.MoveCodeFileToAccept(name);

        string response = "Test";
        return Content(response, "application/json");  
    }

查看/按钮:

<input type="button" class="btn btn-success sendCodesToDB" value="Umieść kody w bazie" data-value="@item.Name"/>

查看/脚本:

<script>
$('.sendCodesToDB').on('click', function () {

    var name = $(this).data("value");

    $.ajax({
        url: '/ActualCodes/InsertCodesToDB',
        type: 'POST',
        dataType: 'json',
        cache: false,
        data: JSON.stringify({ 'name': 'name' }),
        success: function (response) {
                @(ViewBag.MessageOK) = response;
        },
        error: function () {
            onBegin;
        }
    });
});

function onBegin() {
        $('#files').hide();
        $('#insertFiles').hide();
        $('#loading').show();
        $('#lblSelectedProductName').text('Trwa umieszczanie kodów w bazie danych. Proszę czekać ...');
        $('#ttt').show();
}
</script>

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您似乎没有为jQuery添加on ready函数。尝试在点击操作之前添加它并在onBegin()函数之前关闭它,如下所示:

<script>
// open here
$( document ).ready(function() {

    $('.sendCodesToDB').on('click', function () {

       var name = $(this).data("value");

       $.ajax({
           url: '/ActualCodes/InsertCodesToDB',
           type: 'POST',
           dataType: 'json',
           cache: false,
           data: JSON.stringify({ 'name': 'name' }),
           success: function (response) {
                   @(ViewBag.MessageOK) = response;
           },
           error: function () {
               // function call missing "()"
               onBegin();
           }
       });
    });
// and close here
});

function onBegin() {
    $('#files').hide();
    $('#insertFiles').hide();
    $('#loading').show();
    $('#lblSelectedProductName').text('Trwa umieszczanie kodów w bazie danych. Proszę czekać ...');
    $('#ttt').show();
}
</script>

答案 1 :(得分:0)

Ajax中的代码必须是JavaScript。你不能在那里使用C#代码(打印一些值除外)。 @(ViewBag.MessageOK)在这做什么:

success: function (response) {
    @(ViewBag.MessageOK) = response;
},

如果要在消息框中显示响应,请尝试以下操作:

success: function (response) {
    $("#your_message_id").html(response);
},

注意:除此之外,您的代码中有几个错误,正如其他人在评论中指出的那样。

1-删除data中的引号,如下所示:

data: JSON.stringify({ name: name }),

2-将error更改为此:

error: function () {
   onBegin(); // You need "()" here
}

或者更好:

error: onBegin // You don't need "()" here

答案 2 :(得分:0)

我猜你是以错误的方式在AJAX调用中发送数据。

尝试这样

data: JSON.stringify({ name: name })

希望这会对你有所帮助。