2016-10-05 5 views
-1

Я новичок в Angular js, и я не знаю, работает ли мой POST. Он возвращает объект [object Object]! Какая ошибка это? Я имею в виду, что если POST работает, что-то не так с формой?Почему мой POST возвращает [объект Object]

//Activity controller 
.controller('ActivityCtrl', function($scope, $rootScope, $state, $ionicLoading, $ionicScrollDelegate, PostService, $http, AuthService) { 
    var user = AuthService.getUser(); 
    $http.get("http://hannation.me/api/buddypressread/activity_get_activities_grouped/?userid=" + user.data.id) 
    .success(function(data) { 
     $scope.activities = data.activities; 
    }); 



    $scope.addActivity = function(){  
    //  
    var dataObj = { 
     new_activity : $scope.new_activity 
    }; 
    $http.post('http://hannation.me/api/userplus/activities_post_update/?key=57f211a0354d7&cookie=' 
     + user.cookie + '&content=' + dataObj).success(function(data, status, headers, config) { 
     $scope.message = data; 
    }); 

    $scope.new_activity=''; 
    }; 
}) 
<form class="row"> 
     <div class="col col-80 content col-center"> 
     <input class="new-comment-message" type="text" placeholder="Leave a comment..." ng-model="new_activity" 
     name="new_activity"></input> 
     </div> 
     <div class="col col-20 button-container col-center"> 
     <button class="button button-clear send" type="submit" ng-click="addActivity()"> 
      Send 
     </button> 
     </div> 
    </form> 
+1

Вы 'конкатенация 'dataObj' в URL-адресе. Вы не должны конкатенировать любые произвольные данные в URL. Как минимум, вам нужно использовать 'encodeURIComponent()' вокруг ваших строк, например 'user.data.id', но вы определенно не можете просто использовать' dataObj' as-is. – Brad

+0

Спасибо! Я попробую –

+0

@Brad Можете ли вы показать мне пример работы для POST? –

ответ

1

Во-первых, и в основном потому, что это действительно меня беспокоит ... используйте свойство params для параметров запроса и не используйте метод deprecatedsuccess. Использование params гарантирует, что ваши параметры запроса дезинфицируются для использования в URL-адресе (см. encodeURIComponent()).

$http.get('http://hannation.me/api/buddypressread/activity_get_activities_grouped/', { 
    params: { userid: user.data.id } 
}).then(function(response) { 
    $scope.activities = response.data.activities; 
}); 

Во-вторых, это documentation (который я предполагаю, что это правильно) означает, что вы должны использовать GET запрос, не POST и content, как представляется, быть строкой, чтобы ваш второй запрос должен выглядеть

$http.get('http://hannation.me/api/userplus/activities_post_update/', { 
    params: { 
     key: '57f211a0354d7', 
     cookie: user.cookie, 
     content: $scope.new_activity 
    } 
}).then(function(response) { 
    // not sure about this, the documentation doesn't indicate there's a response 
    console.log('response data', response.data); 
}); 
+0

Это был своего рода работает Эта ошибка я это содержание косяк добавил просить ionic.bundle.js: 23826 GET http://hannation.me/api/userplus/activities_post_update/?cookie= adminara% 7C ... 4c1bdc98bd601cbb37b37f1a5cdd2f658d5de39b329fda087e3798e8 & key = 57f211a0354d7 404 (не найдено) –

+0

Это не работает. –

+0

Спасибо, что это работает! –

-1

Ответ лежит в пределах вашего вопроса. Вы подписываете объект на свое сообщение, вы должны сделать так:

$http.post('http://hannation.me/api/userplus/activities_post_update/?key=57f211a0354d7&cookie=' 
    + user.cookie + '&content=' + dataObj).success(function(data, status, headers, config) { 
    $scope.message = data.message; 
}); 

Здесь я присвоил одно из значений, которое я получаю от почтового запроса. Чтобы узнать, какие значения лежат в вашем объекте ответа, консоль вашего объекта ответа и присвойте соответствующее значение вашему $ scope.message.

+0

Откуда вы знаете, что в ответе есть свойство message? – Phil

+0

я только что дал пример @Phil – Chetan

Смежные вопросы