在 AngularJS 中重写 jQuery Ajax 调用

Posted

技术标签:

【中文标题】在 AngularJS 中重写 jQuery Ajax 调用【英文标题】:Rewrite jQuery Ajax call in AngularJS 【发布时间】:2012-07-22 08:52:30 【问题描述】:

对于这个 jQuery ajax POST 是否有 AngularJS 等效调用,使用 contentTypesetRequestHeader

$.ajax(
    url: "http://localhost/songs",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    beforeSend: function (xhr) 
        xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
    ,
    success: function(data)
        console.log(data);
    
);

【问题讨论】:

【参考方案1】:

您可能想要使用$http 或$resource 服务。在 $http 文档中,您可以看到关于 Setting HTTP Headers 的部分来设置 SOAPAction,默认内容类型将设置为 json(尽管您也应该能够覆盖它)。

这可能会让您入门,我有兴趣查看其他答案以获得更好的方法,因为这似乎有限。

var module = angular.module('myApp', []);

module.config(function ($httpProvider) 
    $httpProvider.defaults.headers.post['SOAPAction'] = 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems';
);

function myController($http) 
    var data =  'value1': 1, 'value2': 2 ;

    $http.post('/songs', data).success(function (data) 
        console.log(data);
    );

基于this thread,我不相信您可以为每个调用设置不同的标头,但看起来change 可能会进入允许它的$resource 服务。

更新:一定在文档中遗漏了它,但您绝对可以使用$http per this post 为每个调用设置不同的操作,如下所示:

var data =  'value1': 1, 'value2': 2 ;

$http.post('/songs', data, headers: 'SOAPActions': 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems')
    .success(function (data) 
        console.log(data);
    ); 

【讨论】:

以上是关于在 AngularJS 中重写 jQuery Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

我们应该将 jQuery 与 AngularJS 一起使用吗? [关闭]

在AngularJS中使用Node for Angular HTML5 Mode重写IIS URL

AngularJS + JQuery:如何在 angularjs 中获取动态内容

jQuery $.map 的 Angular 等价物?

2021-04-19 从angularjs 迁移到vue

jQuery .load() 等效 AngularJS