我正在尝试在我的项目中添加“删除请求”但不起作用...
给我留言:
“”ERROR HttpErrorResponse {headers:HttpHeaders,status:200,statusText:“OK”,url:“here”,ok:false,...}“”
我在service.ts上的方法是:
delete(productId: number): void {
this.products = this.products.filter(Product => Product.id !== productId);
this.produtoService.deleteProduct(productId).subscribe();
}
我的component.ts:
app.delete('/produtos', function (req, res) {
console.log(req.body);
mc.query('DELETE FROM `produtos` WHERE `id`=?', [req.body.id], function
(error, results, fields) {
if (error) throw error;
res.end('Record has been deleted!');
});
});
我在node.js上的方法:
<tbody>
<tr *ngFor="let product of products">
<th scope="row">{{product.id}}</th>
<td>{{product.nome}}</td>
<td>{{product.price}}</td>
<td>{{product.url}}</td>
<td> <button class="btn-primary delete" title="delete product"
(click)="delete(product.id)">
Delete
</button></td>
</tr>
</tbody>
当然还有html按钮:
def upload_zip(request):
if request.method == 'POST' and request.FILES['myfile']:
my_file = request.FILES['myfile']
fs = FileSystemStorage()
settings.MEDIA_ROOT = 'fama/static/resources/' + request.user.username
filename = fs.save(my_file.name, my_file)
uploaded_file_url = fs.url(filename)
str = my_file.name
var = str.replace(".zip", "")
z = zipfile.ZipFile(my_file)
zip = zipfile.ZipFile(my_file)
zip.extractall('fama/static/resources/' + request.user.username + '/')
dataset_array = os.listdir('fama/static/resources/'
+ request.user.username + '/' + var)
os.remove('fama/static/resources/' + request.user.username + '/'
+ var + '.zip')
return filename
如果你能帮助我,我很高兴。
@Edit:github =
上的项目答案 0 :(得分:0)
在您的Angular代码中,您正在尝试解析响应:
map((response: Response) => response.json())
如果响应为空,这将失败,因为它不是有效的JSON。删除此行,或更改后端以返回一些有效的JSON
如果您正在使用HttpClient,默认情况下会尝试将其解析为JSON,因此删除该行不会修复它。除了删除该行之外,您还需要在httpOptions中将responseType
设置为text
:
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
responseType: 'text' as 'text'
}
(请注意,我们必须根据this issue明确键入responseType。另请注意,无需更改Content-Type
标头,因为您仍然在发送JSON,只是没有获取JSON回来。)
答案 1 :(得分:0)
对于删除请求,您需要在标头中允许删除请求。 使用res.header(&#34; Access-Control-Allow-Methods&#34;,&#34; GET,PUT,POST,DELETE&#34;);
或添加此中间件
app.use((req,res,next)=>
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
next()
}
如果未设置此标头,则删除请求将无法在节点上运行。 您也可以对所需的URL发布请求,如果没有,则提供删除功能。但设置标题工作正常。