我发送一个ajax请求来获取数据,使用此代码。
self.emailNotification = ko.observable();
self.checkNotificationOfEmail = function (){
$.ajax({
type: 'POST',
url: BASEURL + 'index.php/myprofile/checkNotificationOfEmail/' + auth,
contentType: 'application/json; charset=utf-8'
})
.done(function(data) {
alert(data);
self.emailNotification(data.on_off);
})
.fail(function(jqXHR, textStatus, errorThrown) {
self.errorMessage(errorThrown);
})
.always(function(data){
});
};
self.checkNotificationOfEmail();
问题是当我发出警报(数据)时我得到了对象对象,当我尝试将我所进入的数据推入self.emailNotication observable时,它无效。不知道我做错了什么。当我尝试提醒self.emailNotification(data.on_off);我得到了不确定。 检查控制台时
答案 0 :(得分:2)
你的ajax调用的响应是一个数组,所以
public static Bakery createBakery(final String orderedBakegood)
{
switch(bakegood)
{
case "Cake": return new CakeBakery();
case "Bread": return new BreadBakery();
default: throw new InvalidBakeryException();
}
}
未定义,您需要访问集合中的第一个项目
self.emailNotification(data.on_off);
答案 1 :(得分:1)
您应该使用alert
之外的其他工具进行调试,console.log
或者甚至是调试器。这将为您提供更多信息。
您的具体问题可能是因为data
的结构不符合您的预期:它包含数组项目。除此之外你的代码还可以。参见:
var BASEURL = "/testing/", auth = "faketestvalue";
function ViewModel() {
var self = this;
self.emailNotification = ko.observable();
self.checkNotificationOfEmail = function() {
$.ajax({
type: 'POST',
url: BASEURL + 'index.php/myprofile/checkNotificationOfEmail/' + auth,
contentType: 'application/json; charset=utf-8'
})
.done(function(data) {
alert(data);
self.emailNotification(data[0].on_off);
});
};
}
// Fake ajax stuff (synchronously):
var fakeData = [{ on_off: true }];
var $ = {
ajax: function(options) {
return {
done: function(callback) {
callback(fakeData);
}
};
}
};
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<button data-bind="click: checkNotificationOfEmail">checkNotificationOfEmail</button>
<hr>
Debug info:
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>