Sinatra (Mongodb)에 API가 있습니다. Angularjs로 작성된 매우 작은 응용 프로그램에서 POST 메서드로 일부 데이터를 쓰려고합니다. 내가 보내려고하는 데이터는 'aplication/x-www-form-urlencoded'입니다. 어떤 이유로 나는 오류가 계속 :Sinatra 오류 - JSON :: ParserError - 784 : 예기치 않은 토큰
JSON::ParserError - 784: unexpected token at 'id=111&name=Bruce&city=LA&address=City1':
내가 URL로 인코딩 된 일부 데이터가 있음을 볼 수 있지만시나가 올바르게 읽지 않습니다.
시나 :
post '/companies' do
company=JSON.parse(request.body.read)
company = Company.new(company)
end
AngularJS와 스크립트
var formApp = angular.module('formApp', []);
function formController($scope, $http) {
$scope.formData = {};
$scope.processForm = function() {
$http({
method : 'POST',
url : 'http://localhost:4567/api/v1/companies',
data : $.param($scope.formData), // pass in data as strings
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function(data) {
console.log(data);
if (!data.success) {
// if not successful, bind errors to error variables
$scope.errorName = data.errors.name;
$scope.errorSuperhero = data.errors.superheroAlias;
} else {
// if successful, bind success message to message
$scope.message = data.message;
$scope.errorName = '';
$scope.errorSuperhero = '';
}
});
};
}
형태가 HTML 완료 후 나는 버튼으로 기능 formData를 호출 오전 : 당신은 시도
body ng-app="formApp" ng-controller="formController">
<div class="container">
<div class="col-md-6 col-md-offset-3">
<!-- PAGE TITLE -->
<div class="page-header">
<h1><span class="glyphicon glyphicon-tower"></span> Submitting Forms with Angular</h1>
</div>
<!-- SHOW ERROR/SUCCESS MESSAGES -->
<div id="messages" class="well" ng-show="message">{{ message }}</div>
<!-- FORM -->
<form ng-submit="processForm()">
<div id="superhero-group" class="form-group" ng-class="{ 'has-error' : errorSuperhero }">
<label>ID</label>
<input type="text" name="id" class="form-control" placeholder="Caped Crusader" ng-model="formData.id">
<span class="help-block" ng-show="errorSuperhero">{{ errorSuperhero }}</span>
</div>
<div id="name-group" class="form-group" ng-class="{ 'has-error' : errorName }">
<label>Name</label>
<input type="text" name="name" class="form-control" placeholder="Bruce Wayne" ng-model="formData.name">
<span class="help-block" ng-show="errorName">{{ errorName }}</span>
</div>
<!-- SUPERHERO NAME -->
<div id="superhero-group" class="form-group" ng-class="{ 'has-error' : errorSuperhero }">
<label>City</label>
<input type="text" name="city" class="form-control" placeholder="Caped Crusader" ng-model="formData.city">
<span class="help-block" ng-show="errorSuperhero">{{ errorSuperhero }}</span>
</div>
<div id="superhero-group" class="form-group" ng-class="{ 'has-error' : errorSuperhero }">
<label>Address</label>
<input type="text" name="address" class="form-control" placeholder="Caped Crusader" ng-model="formData.address">
<span class="help-block" ng-show="errorSuperhero">{{ errorSuperhero }}</span>
</div>
<!-- SUBMIT BUTTON -->
<button type="submit" class="btn btn-success btn-lg btn-block">
<span class="glyphicon glyphicon-flash"></span> Submit!
</button>
</form>
<!-- SHOW DATA FROM INPUTS AS THEY ARE BEING TYPED -->
<pre>
{{ formData }}
</pre>
</div>
JSON을 구문 분석하려고하지만 해당 문자열이 JSON처럼 보이지 않습니다. 구문 분석하려는 문자열의 전체 문자열을 게시 할 수 있습니까? –
나는 anglejs 스크립트 및 html 형식의 게시물을 편집했습니다. 다른 것을보고 싶다면 – quant
이라고 말하십시오. AngularJS 코드는 오래되어 사용되지 않습니다. 자세한 내용은 [왜 $ $ 성공/오류 메서드가 더 이상 사용되지 않습니다? v1.6에서 삭제?] (https://stackoverflow.com/questions/35329384/why-are-angular-http-success-error-methods-deprecated-removed-from-v1-6/35331339#35331339). – georgeawg