如何在angular的$http中添加ajax的dataType属性

How to add dataType property of ajax in $http of angular?

本文关键字:添加 ajax dataType 属性 angular http      更新时间:2023-09-26

我想使用Angular对服务器进行rest调用,但我被阻止了。我尝试了使用带有基本授权头的传统jQuery ajax调用,看起来像这样:

        jQuery.ajax({
            url: "http://localhost:8080/public/emp",
            type: "GET",
            dataType:"jsonp",
            Accept : "application/json",
            contentType: "application/json",
            headers: {
                'Authorization': 'Basic XXXXXXXXXXX'
            },
            success: function (data){
                alert(data);
            },
            error: function(){
                alert('Error');
            }
        });

它工作得很好,可以检索数据。

但是当我尝试用AngularJs的$http转换它时。类似这样的东西:

        $http({
            method:'GET',
            url : 'http://localhost:8080/public/emp',
            headers: {'Authorization': 'Basic XXXXXXXXXX',"content-type":"application/json","Accept" : "application/json"}})
        .success(function (data) {
            alert("success");
        })
        .error(function (error) {
            alert("error");
        });

它给我错误401-未经授权的

如何将dataType属性添加到$http?我尝试过这个堆栈溢出的链接,但仍然无法得到解决方案。

您尝试过$http.jsonp方法吗?对于您的情况,这应该是这样工作的:

$http.jsonp('http://localhost:8080/public/emp', {
        headers: {
            'Authorization': 'Basic XXXXXXXXXX',
            "content-type":"application/json",
            "Accept" : "application/json"
        }});

这里还有一个工作plunker的例子。angular团队的更通用的一个

尝试此获取方法

js中的

$http({
                url: 'customUrl',
                method: 'GET',
                params: {},
            }).then(function (result) {
                return result;
            }).catch(function (e) {
                throw e;
            });

在api中

[HttpGet]
    public string GetDraftData(byte id)
    {
        return string;
    }

试试这个张贴方法

js中的

                $http({
                    url: 'customUrl',
                    method: 'POST',
                    data: yourJsonData,
                    headers: { 'Content-Type': 'application/json; charset=UTF-8' },
                    //params: { jsonData: "I am shohel rana" },
                    //timeout: 10,
                    //cache: false,
                    //transformRequest: false,
                    //transformResponse: false
                }).then(function (success) {
                    return success;
                }).catch(function (e) {
                    throw e;
                });

在api中

       [HttpPost]
        public bool SaveDraft([FromBody]object draft)
        {
            try
            {
                return _iDraftDataSvc.InsertDraftData(draft);
            }
            catch (Exception)
            {
                throw;
            }
        }

尝试将方法从GET更改为JSONP。我不太确定是否可以添加自定义标头(正如我所听到的),我还没有尝试过。

$http({
    method:'JSONP',
    url : 'http://localhost:8080/public/emp',
    headers: {'Authorization': 'Basic XXXXXXXXXX',"content-type":"application/json","Accept" : "application/json"}})
.success(function (data) {
    alert("success");
})
.error(function (error) {
    alert("error");
});