我在根据服务调用的响应更新记录时添加了几个警报。
当我检查响应中是否有任何数据时:
if (response.data === null)
此部分似乎不受尊重,并且显示记录更新的警报成功,如果您查看屏幕截图,则response.data为空。
我不确定为什么简单的if不起作用,或者我正在查看错误的响应对象。
有人可以伸出援手,以便了解如何做到这一点的最佳做法吗?
谢谢。
更新的图片
答案 0 :(得分:2)
您只能使用以下方式查看:
if ( response.data )
检查是否:
空
假
未定义
0
的NaN
为空("")
答案 1 :(得分:2)
我不确定你为什么不工作,你可以做下面的事情并尝试。
if(response && response.data === null && typeof response.data === "object")
答案 2 :(得分:1)
您需要查找值null
,而不是字符串"null
"。
在您使用response.data === null
的帖子中,但在屏幕截图中,您正在response.data === 'null'
。那是检查字符串值'null'
,不会发生!编辑屏幕截图中的if
语句,使其与您帖子中的语句相似;)
接下来要做的是用花括号包裹整个块。
现在,您的代码相当于:
if (response.data === null) {
$scope.pages = response.data;
}
alert("....");
clearFields();
包含块中所有需要的代码:
if (response.data === null) {
$scope.pages = response.data;
alert("....");
clearFields();
}
答案 3 :(得分:0)
希望这有助于解释为什么您没有得到您期望的结果(阅读代码中的评论):
function boooooom(msg) {
alert('We\'re sorry folks! ' + msg);
}
$http({
method: 'PUT',
url: 'api/StorePage/PutStorePage?StorePageId=' + this.newpage.StorePageID,
data: storePage,
})
.then(
// This callback will be called when the response is *available*
function(response) {
// Change this to `response.data` instead of `!response.data`
if (response.data) {
$scope.pages = response.data;
alert('Congrats!');
} else {
boooooom('No data');
}
},
// This callback is called if an error occurs or if the server
// returns a response with an *error* status.
//
// *Your* request hasn't caused an error as it *has* responded
// and the response is a 200 status (which is not an error status)
// so this callback doesn't get called.
function(response) {
boooooom('Houston we have a problem');
}
)
// It looks like you always want to `clearFields` for both failure and success
// so you can just do that here, which will do that for you.
.finally(clearFields);