2014-04-12 28 views
8

Khi tôi sử dụng $http.get mã của tôi hoạt động, nhưng nếu tôi sử dụng $ http.post, tôi sẽ không bao giờ nhận được tham số cho tệp yêu cầu .php.

Đây là chức năng dịch vụ:

TestPanel.service('MySampleService', function ($http, $q) { 
    this.getAllPosts = function() {  

     var def = $q.defer(); 
     $http.post('/data/AJAXRequest.php', 'mydata=1&abcd=2').success(function (data) { 
      if (data == null) 
       def.reject('ERROR: DATA IS NULL'); 
      else if (data.HasError) 
       def.reject('ERROR: ' + data.Message); 
      else 
       def.resolve(data); 
     }).error(function() { 
      def.reject('ERROR: Sorry, unable to complete your request.'); 
     }); 

     return def.promise; 
    } 
}); 

Và điều khiển chức năng: nộp

TestController.controller('PostCtrl', ['$scope', '$http', 'MySampleService', 
    function ($scope, $http, MySampleService) {  

     function FetchPostsList() { 
      MySampleService.getAllPosts().then(function (data) { 
       $scope.lstPosts = data.ResponseData; 
       $scope.totalRecords = data.totalRecords; 
       console.info('DATA=' + $scope.lstPosts); 
      }, 
      function (err) { 
       console.info('err=' + err); 
      }); 
     } 

     FetchPostsList(); 
    } 
]); 

và My AJAXRequest.php

<?php 
    var_dump($_POST) 
?> 

nếu tôi sử dụng $ http.post ()

Output:

array (size=0) 
    empty 

Nếu tôi sử dụng $ http.get() đầu ra của tôi là:

array (size=2) 
    'mydata' => string '1' (length=1) 
    'abcd' => string '2' (length=1) 

Tôi đã kiểm tra các bài trong công cụ Firebug, mà nó gửi dữ liệu đến tệp php của tôi. nhưng tập tin php không nhận được thông số.

Nếu tôi sử dụng $ .ajax hoặc $ .post mã của tôi hoạt động và cung cấp phản hồi.

+0

Giải pháp này làm việc cho tôi http://stackoverflow.com/questions/19254029/angularjs-http-post-does-not-send-data – Renaud

Trả lời

4

gì nếu bạn chỉ định các content-type trong tiêu đề, cụ thể như sau:

$http({ 
method: 'POST', 
url: '/data/AJAXRequest.php', 
data: { mydata: 1, abcd: 2 }, 
headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
}).success(....); 

comments Tìm thấy liên quan đến PHP cụ thể từ câu hỏi này: AngularJs $http.post() does not send data

Có vẻ như Angular sẽ gửi dưới dạng ứng dụng/json theo mặc định, điều này có thể gây nhầm lẫn PHP.

+1

Cách bạn nói với tôi nó gần như làm việc .... ý tôi là, nếu tôi thiết lập các thông số như thế này "dữ liệu: {mydata: 1, abcd: 2}" nó không hoạt động. nhưng nếu tôi sử dụng tham số "dữ liệu: 'mydata = 1 & abcd = 2'" hoạt động của nó tốt. có lẽ tôi phải đặt tiêu đề JSON trong tệp php. Nhưng dù sao thì cũng nhờ nó. –

+0

FYI mydata = 1 & abcd = 2 là dữ liệu được tuần tự hóa. Bạn có thể nhận được góc 1.4 để làm điều đó tự động cho bạn hoặc bạn có thể sử dụng một chức năng yêu cầu biến đổi. Nếu tìm thấy dễ dàng hơn để bạn chỉ có thể sử dụng dữ liệu json như JQuery. – mbokil

2

bài viết dữ liệu như thế này:

$http.post('/data/AJAXRequest.php', { mydata: 1, abcd: 2 }) 
+1

tôi đã làm nhưng vẫn không hoạt động ... tôi không biết tại sao tệp php hiển thị en thư rỗng. nếu tôi sử dụng $ .post jquery phương pháp công việc của nó. –

3

Tôi gặp phải sự cố tương tự nhưng tôi thấy rằng không có vấn đề gì trong phương pháp đăng bài góc http, có vấn đề ở đó tôi đang cố gắng tải dữ liệu bài đăng.

$params = json_decode(file_get_contents('php://input'),true); 

tôi đã sử dụng mã này để có được những dữ liệu gửi từ góc cạnh và tác phẩm của mình như một nét duyên dáng

0
$http({ 
    method: 'POST', 
    url: 'http://mtapi.azurewebsites.net/api/sectiontype', 
    dataType: 'json', 
    data: {SectionTypeId:0, Name: $scope.message}, 
    headers: { 'Content-Type': 'application/json; charset=UTF-8' } 
}).success(function (data) { 
    alert(data); 
}).error(function (data) { 
    alert(data); 
}); 

tiêu đề phải được thêm vào cuối mảng nếu không nó sẽ không hoạt động.

Các vấn đề liên quan