Я пытаюсь отправить данные в api rest, а затем показать эти данные на одной странице. Вот код для формы, где я добавляю данные
<div>
<form name="posts">
<table class="table">
<tr>
<td>
<input name="userId" type="text" ng-model="userId"/>
</td>
<td>
<input name="id" type="text" ng-model="id"/>
</td>
</tr>
<tr>
<td>
<input type="text" name="title" ng-model="title" />
</td>
<td>
<input type="text" name="body" ng-model="body" />
</td>
</tr>
<tr>
<td>
<input type="button" class="btn btn-default" value="Add" ng-click="AddNewPost()" />
</td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</form>
</div>
Здесь я показываю добавленные данные
<table>
<thead>
<tr>
<th>UserId</th>
<th>Id</th>
<th>Title</th>
<th>Body</th>
</tr>
</thead>
<tbody >
<td>{{UserId}}</td>
<td>{{Id}}</td>
<td>{{Title}}</td>
<td>{{Body}}</td>
</tr>
</tbody>
</table>
и метод контроллера, который я использовал,
$scope.AddNewPost = function () {
var pst = {
userId: $scope.userId,
id: $scope.id,
title: $scope.title,
body: $scope.body
};
$http({
method: 'POST',
url:'http://jsonplaceholder.typicode.com/posts/',
data: pst,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(data){
$scope.UserId=pst.userId;
$scope.Id=pst.id;
$scope.Title=pst.title;
$scope.Body=pst.body;
});
}
Но это не работает. Я знаю, что есть вопросы, заданные по этой теме ранее, но они мне не помогли. Я новичок в угловой, поэтому, пожалуйста, помогите мне найти, где я делаю ошибку.
кажется, что вы используете одну и ту же переменную pst
для присвоения значения переменным области видимости. вы должны убедиться, что сначала проверите console.log
что pst
имеет в нем значения. ты должен сделать
Предполагая, что
data
возвращены в форме post, содержат объектpost
+ Изменить
.success(function(data){
$scope.UserId=pst.userId;
$scope.Id=pst.id;
$scope.Title=pst.title;
$scope.Body=pst.body;
});
к
.success(function(data){
$scope.UserId=data.post.userId;
$scope.Id=data.post.id;
$scope.Title=data.post.title;
$scope.Body=data.post.body;
});
Я рекомендую для нескольких данных сообщения, вы должны использовать ng-repeat в своем HTML
$http.post(url, dataObject, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(function(response) {
//success
}, function(error) {
//error
});
Попробуйте этот код.