我正在关注an online example进行HTTP长轮询。我试图在没有KnockoutJS的情况下做到这一点。
以下是我在Javascript上的内容:
$(document.ready(function(){
$("#mybutton").click(function() {
//Some checks
pollForMessages();
}
function pollForMessages()
{
$.ajax({
url: '......',
type:"GET",
cache: false,
success: function(m) {/*....*/},
error: function(h){/*......*/},
complete: pollforMessages
});
}
}
但是我收到了Ajax错误:$.ajax.error
。如果我在github上关注那个例子并使用ko.applyBinding()
然后去那条路就行了。在ajax长轮询方面,这种方式与淘汰赛的区别是什么?
答案 0 :(得分:1)
Knockout与长轮询,xhr,ajax或其他任何事情无关。
我的两分钱是“这个”范围的问题。该示例使用了相当“兴奋”的解决方案。我永远不会把xhr对象放在一个可观察的对象中。这样做是没有意义的。
StackTrace或Chrome控制台的屏幕截图会有所帮助。
您的代码应该有效,请参阅此小提琴http://jsfiddle.net/L8su2/886/
var data = {
json: $.toJSON({
text: 'some text',
array: [1, 2, 'three'],
object: {
par1: 'another text',
par2: [3, 2, 'one'],
par3: {}
}
}),
delay: 3
}
$(document).ready(function () {
$("#mybutton").click(function () {
//Some checks
alert('start');
pollForMessages();
});
function pollForMessages() {
alert('poll');
$.ajax({
url: "/echo/json/",
data: data,
type: "POST",
success: function (response) {
console.log(response);
},
complete: pollForMessages
});
}
});