Преобразование вызова $.ajax в вызов $http при ошибке angular 404

Я работаю над преобразованием вызова jquery ajax в угловой вызов $http, но по какой-то причине возвращаю статус 404. Вот оригинальный вызов jquery.

function getStaffInfo(){                    
    $.ajax({
        url: 'https://my.website.com/j/wkr/stafflist.php',
        data: {f: 'staff'},
        dataType: 'jsonp',
        jsonp: 'callback',
        jsonpCallback: 'vcLoadStaff',
        success: function(){
                                //alert("success");
        }
    });
}

Вот угловой вызов $http:

app.service('staffList', function($http){

var staffList = {};

$http.jsonp('https://my.website.com/j/wkr/stafflist.php', {"f":"staff"})
.success(function(data, status, headers, config) {
        console.log(data);
        staffList = data;
    }).error(function(data, status, headers, config) {
        console.log(status);
});

return staffList;

});

Я что-то упустил в своем угловом коде?


person byrdr    schedule 30.12.2014    source источник
comment
добавить {f:staff, callback:jsonp_callback} в боковые параметры   -  person Pankaj Parkar    schedule 30.12.2014


Ответы (3)


Я считаю, что вам нужно добавить ?callback=JSON_CALLBACK к вашему URL.

$http.jsonp('https://my.website.com/j/wkr/stafflist.php?callback=JSON_CALLBACK', {"f":"staff"})
.success(function(data, status, headers, config) {
        console.log(data);
        staffList = data;
    }).error(function(data, status, headers, config) {
        console.log(status);
});

Изменить. Чтобы уточнить, когда вы вносите это изменение, результирующие данные будут заключены в JSON_CALLBACK([...]). Также проверьте этот соответствующий ответ.

person Noel    schedule 30.12.2014

Служба http возвращает полезную нагрузку в виде обещания, поэтому вы можете обнаружить, что вам нужно вызвать успех службы внутри контроллера, в котором вы ее используете, например.

app.service('staffList', function ($http) {
    return {
        getList: function () {
            $http.jsonp('https://my.website.com/j/wkr/stafflist.php?callback=JSON_CALLBACK', {"f":"staff"})
        }
    };
});

app.controller('staffController', [$scope, staffList, 
    function($scope, staffList) {

        staffList.getList().success(function(data, status, headers, config) {
            console.log(data);
        }).error(function(data, status, headers, config) {
            console.log(status);
        });
    }
]);

Служба angular $q также может быть полезна, хотя я обнаружил, что приведенная выше реализация несколько проще в использовании.

https://docs.angularjs.org/api/ng/service/$q

person zia grosvenor    schedule 30.12.2014

В угловой документации ваш $http.jsonp может быть таким:

jsonp(url, [config]);

Так что вы можете попробовать

$http.jsonp('https://my.website.com/j/wkr/stafflist.php', {data:{"f":"staff"}})

https://docs.angularjs.org/api/ng/service/$http #jsonp

person selami    schedule 30.12.2014