Succes метод $.Ajax не работает в ASP MVC

Я прочитал почти все посты на эту тему. Но, к сожалению, я не могу справиться со своей проблемой. Проблема действительно неудобная, по крайней мере для меня:
У меня есть простой код C# для получения статуса отслеживания отправленного фактора в классе ShoppingController следующим образом:

  public string StatusOfFactor( string guid )
    {
        // note that guid was being trimmed in javascript

        Factor factor = (from Factor fact in db.Factors
                         where fact.TrackingCode.ToString() == guid
                         select fact).First();
        return factor.StatusOfFactor;

и у меня есть функция javascript, которая вызывает этот метод следующим образом:

function TrackPurchase() {
    var txtTrackingPurchase = $("#inputpeygiry");
    var guid = $.trim(txtTrackingPurchase.val());
    var urlMain = 'ShoppingController/StatusOfFactor';
    alert(urlMain);

    $.ajax({
        type: 'GET',
        url: urlMain,
        cache: false,
        data:  guid,
        success: function (returnVal) { 
            alert("I am sucess function");
            $("#StatusOfFactor").html(returnVal);

        },
        error: function (e) {
            $("#StatusOfFactor").text("nothing is really exist");
        }
    });    
}

обратите внимание, что у меня есть текстовое поле, с id="inputpeygiry"помощью которого я получаю код отслеживания пользователя. над javascript функция вызова, нажав кнопку ниже:

  <input type="button" class="btn btn-success pull-left" id="btnpeygiry" value="Track Purchase" onclick="TrackPurchase()"/>

так что проблема в том, что функция успеха никогда не звонит!!!
Не могли бы вы все помочь мне решить эту проблему?

2 ответа

  1. Какую версию jQuery вы используете? Методы обратного вызова удаляются с jQuery 3.0. Вы можете использовать jqXHR.done(), jqXHR.fail(), и jqXHR.always()вместо.

    См. документацию jQuery Get

    $.ajax({
        type: 'GET',
        url: urlMain,
        cache: false,
        data:  guid,
    })
    .done(function (returnVal) { 
        alert("I am sucess function");
        $("#StatusOfFactor").html(returnVal);
    
    }).
    fail(function (e) {
        $("#StatusOfFactor").text("nothing is really exist");
    });
    
  2. Измените GETк POSTи оно должно работать отлично для вас.

    Код контроллера становится :

    [HttpPost]
    public string StatusOfFactor( string guid )
    {
        // note that guid was being trimmed in javascript
        Factor factor = (from Factor fact in db.Factors
                         where fact.TrackingCode.ToString() == guid
                         select fact).First();
        return factor.StatusOfFactor;
    }
    

    Код Javascript становится :

    function TrackPurchase() {
    var txtTrackingPurchase = $("#inputpeygiry");
    var guid = $.trim(txtTrackingPurchase.val());
    var urlMain = 'ShoppingController/StatusOfFactor';
    alert(urlMain);
        $.ajax({
            type: 'POST',
            url: urlMain,
            cache: false,
            data:  guid,
            success: function (returnVal) { 
                alert("I am sucess function");
                $("#StatusOfFactor").html(returnVal);
    
            },
            error: function (e) {
                $("#StatusOfFactor").text("nothing is really exist");
            }
        });
    }