我在使用jQuery 1.8.2,jQuery UI 1.8.23和Knockout 2.2.0的頁面上的谷歌瀏覽器版本24.0.1312.52 m
中收到錯誤。當我加載頁面時,對URL的HTTP請求失敗,簡單地說就是GET data: HTTP/1.1
,它是從一個將初始化jQuery UI對話框的語句生成的(請參閱該文章的底部)。該頁面正常工作,但這會導致錯誤出現在狀態欄和JS控制檯中,我想避免嚇倒我的用戶。該錯誤未出現在IE 9或FireFox 15.0.1中,但確實出現在Safari 5.1.7(Windows)中。在Chrome檢查,錯誤的調用堆棧看起來是這樣的:jQ UI對話初始化對話框請求空數據:Chrome中的URL
GET data: jquery.min.js:2
a.getComputedStyle.bH jquery.min.js:2
p.extend.css jquery.min.js:2
bZ jquery.min.js:2
b$ jquery.min.js:2
p.fn.extend.show jquery.min.js:2
p.each.p.fn.(anonymous function) jquery.min.js:2
a.fn.extend.show jquery-ui.min.js:5
a.widget._create._renderAxis jquery-ui.min.js:5
a.widget._create jquery-ui.min.js:5
a.Widget._createWidget jquery-ui.min.js:5
a.widget.a.(anon function).(anon function) jquery-ui.min.js:5
a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5
p.extend.each jquery.min.js:2
p.fn.p.each jquery.min.js:2
a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5
a.widget._makeResizable jquery-ui.min.js:5
a.widget._create jquery-ui.min.js:5
a.Widget._createWidget jquery-ui.min.js:5
a.widget.a.(anon function).(anon function) jquery-ui.min.js:5
a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5
p.extend.each jquery.min.js:2
p.fn.p.each jquery.min.js:2
a.widget.bridge.a.fn.(anonymous function) jquery-ui.min.js:5
ko.bindingHandlers.jqDialog.init QualityWalkViewModel.js:78
b.j.W knockout-2.2.0.js:11
g knockout-2.2.0.js:43
b.j knockout-2.2.0.js:45
W knockout-2.2.0.js:10
X knockout-2.2.0.js:12
Y knockout-2.2.0.js:12
X knockout-2.2.0.js:12
Y knockout-2.2.0.js:12
X knockout-2.2.0.js:12
b.Ca knockout-2.2.0.js:58
registerVM 3896:378
(anonymous function) 3896:362
p.Callbacks.k jquery.min.js:2
p.Callbacks.l.fireWith jquery.min.js:2
p.extend.ready jquery.min.js:2
D jquery.min.js:2
有三個地方,它引用我的腳本:
ko.bindingHandlers.jqDialog.init QualityWalkViewModel.js:78
registerVM 3896:378
(anonymous function) 3896:362
3896是頁面的名稱(它的ID段一個URL如/WalkThrough/Edit/3896
)。從引用行的代碼是:
(anonymous function) 3896:362
360 <script type="text/javascript">
361 $(function() {
362 registerVM(); <--- here
registerVM 3896:378
374 <script type="text/javascript">
375 var vm; // debug
376 function registerVM() {
377 vm = new QualityWalkViewModel(initialQualityWalkData);
378 ko.applyBindings(vm); <--- here
379 }
QualityWalkViewModel.js:78
68 ko.bindingHandlers.jqDialog = {
69 init: function(element, valueAccessor) {
70 var options = ko.utils.unwrapObservable(valueAccessor()) || {};
71
72 // handle disposal
73 ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
74 $(element).dialog('destroy');
75 });
76
77 // init the dialog
78 $(element).dialog(options); <--- here
79 }
80 };
這最後一個腳本是一個自定義綁定處理程序初始化一個jQuery UI的對話框,適合於響應從http://jsfiddle.net/rniemeyer/WpnTU/到MVC Knockout JS inside JQuery dialog
如果我註釋掉$(element).dialog(options);
中,錯誤消失。任何想法爲什麼jQuery UI會產生一個空的data:
網址並嘗試請求它?