我的应用程序中有这部分代码
addComment (body: Object): Observable<Comment[]> {
//let bodyString = JSON.stringify(body); // Stringify payload
let bodyString = JSON.parse(JSON.stringify(body || null ))
let headers = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
let options = new RequestOptions({ headers: headers }); // Create a request option
return this.http.post(this.commentsUrl, bodyString, options) // ...using post request
.map((res:Response) => res.json()) // ...and calling .json() on the response to return data
.catch((error:any) => Observable.throw(error.json().error || 'Server error')); //...errors if any
}
当我尝试在我的应用程序中添加注释时,它会抛出一个错误,如下所示:
POST http://localhost:4200/assets/comments.json 404(未找到)
SyntaxError:位于0的JSON中的意外标记C
有人可以帮助我吗?
完全SyntaxError堆栈:
SyntaxError:位于0的JSON中的意外标记C. 在Object.parse() 在Response.Body.json(body.js:24) 在CatchSubscriber.selector(comment.service.ts:41) 在CatchSubscriber.error(catch.js:104) 在MapSubscriber.Subscriber._error(Subscriber.js:128) 在MapSubscriber.Subscriber.error(Subscriber.js:102) 在XMLHttpRequest.onLoad(xhr_backend.js:82) 在ZoneDelegate.webpackJsonp.1301.ZoneDelegate.invokeTask(zone.js:363) at Object.onInvokeTask(ng_zone.js:264) 在ZoneDelegate.webpackJsonp.1301.ZoneDelegate.invokeTask(zone.js:362) 在Zone.webpackJsonp.1301.Zone.runTask(zone.js:166) 在XMLHttpRequest.ZoneTask.invoke(zone.js:416)
答案 0 :(得分:3)
我正面临着这个问题。
只需改变:
error.json()
到
JSON.parse(JSON.stringify(error))
答案 1 :(得分:1)
我遇到了类似的问题。我发现Angular不支持spring boot的return type函数。
该函数的返回类型为return ResponseEntity.ok().body(new String("Some Message"));
。
ResponseEntity<ResponseMessage>
我将其更改为return ResponseEntity.status(HttpStatus.OK).body(new ResponseMessage("Some Message"));
,并将返回值修改为
ResponseMessage
它奏效了。
public class ResponseMessage {
private String message;
public ResponseMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
类包含
my = [4,5,7,16,17,35,20,37]
for i in my:
j = 2
while j < i:
if i % j != 0:
print(i)
break # you need to put the break out of if statement,so it will go to the next number to test, Hope this help
else:
print("Prime No not found")
感谢Stackoverflow社区。这是我的第一个答案。
答案 2 :(得分:0)
当我尝试在请求中发送空体时,我遇到了类似的问题。你能否确认被发送的尸体未定义?
您可以尝试在帖子周围添加一个条件,在发送之前检查正文是否包含某些内容。
答案 3 :(得分:0)
// Local properties
private model = new Comment(new Date(), '', '');
private editing = false;
// Input properties
@Input() editId: string;
@Input() listId: string;
submitComment(){
// Variable to hold a reference of addComment/updateComment
let commentOperation:Observable<Comment[]>;
if(!this.editing){
// Create a new comment
commentOperation = this.commentService.addComment(this.model)
} else {
// Update an existing comment
commentOperation = this.commentService.updateComment(this.model)
}
// Subscribe to observable
commentOperation.subscribe(
comments => {
// Emit list event
EmitterService.get(this.listId).emit(comments);
// Empty model
this.model = new Comment(new Date(), '', '');
// Switch editing status
if(this.editing) this.editing = !this.editing;
},
err => {
// Log errors if any
console.log(err);
});
}
这就是我调用addComment的方式
答案 4 :(得分:0)
当我的php文件包含连接成功消息时,我得到了类似的错误。当我删除所有echo命令时,期望json_encode(),我得到它的工作因此请确保在你的php文件中只有echo json_encode($data)
的回声
答案 5 :(得分:0)
你能尝试使用这段代码
吗?示例
addComment(user: ApiDashboard) {
return this.http.post(this.commentsUrl,user).map(response =>
response.json());
}
你可以试试
addComment(user: Comment) {
return this.http.post(this.commentsUrl,user).map(response =>
response.json());
}
这里评论是模型文件
例如
export class ApiDashboard {
id: string;
name: string;
price: number;
}
service.ts
private handleError(error: any): Promise<any> {
//console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
我评论了console.log()然后它可以正常工作解决方案。
答案 6 :(得分:0)
您可能已经回显了以 C 开头的内容,例如已连接 您应该只回显json响应,而不回显任何String!