私はローカルelasticsearchエンジンでインデックスを作成するための小さなアプリケーションを開発しようとしています。フロントエンドではanglejsを使用し、バックエンドではspring-bootを使用します。ただし、インデックスを正常に作成することはできますが、フロントエンドでレスポンスを取得したい場合は、エラーが表示され続けます。Angularjs http春のブートからの応答なし
app.service('ESIndexService', function($http) {
this.createESIndex = function(esindexObj) {
var settings = {
method: 'POST',
url: BASE_URL + "/ESIndex/createESIndex",
data: esindexObj
};
return $http(settings).then(function(response) {
console.log("response:"+response);
return response;
}, function(error) {
console.log("error:"+error);
return error;
});
};
});
その後、これは私のコントローラである:
@CrossOrigin
@RestController
@RequestMapping(value = "ESIndex")
public class ESIndexController {
@RequestMapping(value = "createESIndex", method = RequestMethod.POST)
public @ResponseBody String createIndex(@RequestBody ESIndex esIndex) {
try {
Settings settings = Settings.builder()
.put("xpack.security.user", String.format("%s:%s", Constants.ES_UNAME, Constants.ES_PWD)).build();
TransportClient client = new PreBuiltXPackTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Constants.ES_HOST), Constants.ES_PORT));
CreateIndexResponse response = client.admin().indices().prepareCreate(esIndex.getName()).setSettings(Settings.builder()
.put("index.number_of_shards", esIndex.getNumberOfShards())
.put("index.number_of_replicas", esIndex.getNumberOfReplicas())).get();
client.close();
if(response.isAcknowledged() && response.isShardsAcked())
return Constants.SUCCESS;
else
return "Fail to create index!";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
}
私はAngularJS応答で応答ステータスとデータを取得したい
以下は私のAngularJS APIコールです。しかし、それは私にエラーを投げつけ続けます:
error:SyntaxError: Unexpected token i in JSON at position 0
私はJSON.parse関数を使用していません、なぜこのようなエラーが出ますか? responseType追加した後
:まだ同じエラーを投げて、 'テキスト' を、私は "transformResponse:未定義" を追加する必要がありますnextwork
それは結局のところ、クロムの他に、しかし、私のプロジェクト、私はこれをしたことはありません。違いは何ですか?
AngularJS:
this.newBlog = function(blogObj) {
var settings = {
method: 'POST',
url: baseUrl + "/blog/newBlog.do",
data: blogObj
}
return $http(settings).then(function(response) {
return response;
}, function(error) {
return error;
});
};
Javaのコントローラー:
@RequestMapping(value="newBlog.do", method=RequestMethod.POST)
public @ResponseBody String newBlog(@RequestBody Blog blog, HttpServletRequest request) {
User createdBy = (User) request.getSession().getAttribute("user");
if(createdBy == null)
return NO_SESSION_MSG;
else {
createdBy.setPwd(null);
blog.setCreatedAt(TQBUtilities.getCurrentTime());
blog.setLastUpdatedAt(TQBUtilities.getCurrentTime());
blog.setCreatedBy(createdBy);
return blogService.newBlog(blog);
}
}
サービスは有効なJSONを返しません。ブラウザの開発ツール(F12/Cmd-Alt-I)を開いて、ネットワークパネルにアクセスして、あなたが何を応答として得るかを見てください。 'function(error)'コールバックを削除する必要があります。なぜなら、エラーを成功に変換するためです。 –
もっと見ると、この解決策を試すことができます:http://stackoverflow.com/a/27765419/2002257 – jheimbouch
@jheimbouch transformResponse:undefined works! – TommyQu