jQuery Ajax请求变成了AngularJS $ http请求

时间:2016-08-21 09:51:18

标签: javascript jquery angularjs ajax jsonp

我有这样的jQuery Ajax请求。我需要把它变成一个AngularJS $ http请求。我怎么能这样做?

A.findAll({
   include: [{ model: C, where: { z: "test" } }]
})

我的角色实施

回复{"数据" :"","状态" :" 200"," config" :....}数据为空

    $.ajax({
        type: "POST",
        dataType: "jsonp",
        crossDomain: false,
        data:{
            user: username,
            pass: password
        },
        beforeSend: function (request){
            request.setRequestHeader("Accept-Language", languageCode);
        },
        url: someUrl
    })
    .done(function (data, textStatus, jqXHR){
        console.log(data);
    })
    .fail(function (jqXHR, textStatus){
       console.log("failed");
    });

我成功地使用下一个请求将数据包装在JSON_CALLBACK中。但我不知道怎么称呼这个回调。它不是自动完成的。响应看起来像{data:" JSON_CALLBACK({mydata})" ...}

login : function (username, password) {
  return $http({
    method: 'POST',
    url: someUrl,
    data: {
      user: username,
      pass: password
    },
    headers: {
      'Accept-Language': languageCode
    }
  })
} 

3 个答案:

答案 0 :(得分:0)

请参阅$http文档。但这个jquery请求有点对应

$http({
  method: 'POST',
  url: '/someUrl',
  data: {  
        user: username,
        pass: password 
  },
  headers: {
    'Accept-Language':languageCode
  }
}).then(function successCallback(response) {
    //do something
  }, function errorCallback(response) {
    //do something
  });

答案 1 :(得分:0)

没有JSONP POST请求。当jQuery看到dataType: jsonp时,它会忽略method属性并使用脚本GET请求。数据将作为URL的参数添加。

在AngularJS中,JSONP请求使用method: 'JSONP指定。回调参数必须为JSON_CALLBACK且必须大写。

login : function (username, password) {
  return $http({
    //method: 'POST',
    method: 'JSONP',
    url: someUrl,
    //data: {
    params: {
      user: username,
      pass: password,
      callback: "JSON_CALLBACK"
    },
    headers: {
      'Accept-Language': languageCode
    }
  })
} 

请注意,由于数据是作为URL参数发送的,因此敏感信息(如密码)容易受到窥探攻击。

在JSFiddle上演示:

var url="//jsfiddle.net/echo/jsonp/";
var params = { user: "myUser",
               pass: "123456",
               callback: "JSON_CALLBACK"
            };
$http.jsonp(url, { params: params} )
    .then(function onSuccess(response) {
         $scope.response = response;
         console.log(response);
    })

DEMO on JSFiddle

答案 2 :(得分:0)

AngularJS error .success is not a function

可能与它有关吗?

您正在使用哪种API?