Это следующий фрагмент кода работает отлично, используя jQuery1.2.3, но он не работает с последней версией JQuery:getJSON не работает с последней версией JQuery
$.getJSON(url,{str: $$.val() }, function(j){
if (j.length > 0) {
var options = '<option value="">' +params.firstOption+ '</option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
}
$dest.removeAttr('disabled')
.html(options)
.find('option:first')
.attr('selected', 'selected');
});
Пожалуйста, обратите внимание, что это выше код фактически часть плагина jQuery для каскадного выпадающего списка. Он дает желаемый результат, если я использую jQuery1.2.3. Полный код плагина выглядит следующим образом:
(function($){
$.fn.linkedSelect = function(url,destination,params) {
var params = $.extend({
firstOption : 'Please Select',
loadingText : 'Loading...'
},params);
var $dest = $(destination);
return this.each(function(){
$(this).bind('change', function() {
var $$ = $(this);
$dest.attr('disabled','false')
.append('<option value="">' +params.loadingText+ '</option>')
.ajaxStart(function(){
$$.show();
});
$.getJSON(url,{str: $$.val() }, function(j){
alert('User clicked on this.');
if (j.length > 0) {
var options = '<option value="">' +params.firstOption+ '</option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
}
$dest.removeAttr('disabled')
.html(options)
.find('option:first')
.attr('selected', 'selected');
}); // end getJSON
}); // end change
}); // end return each
}; // end function
})(jQuery);
Пожалуйста, обратите внимание, что он не может генерировать следующее предупреждающее сообщение
alert('User clicked on this.');
, что написано внутри функции getJSON для отладки цели, если я использую последнюю версию JQuery. И я также отслеживал использование JS-отладчика, он не может войти в функцию getJSON, если я использую последнюю версию jQuery. Но он показывает это предупреждающее сообщение, если я использую jQuery1.2.3.
В консоли ошибок, предупреждающие сообщения являются:
Warning: reference to undefined property b.p.height
Source File: http://localhost//js/jquery.jqGrid.min.js Line: 99
Warning: reference to undefined property b.p.serializeGridData
Source File: http://localhost/js/jquery.jqGrid.min.js Line: 62
Warning: reference to undefined property jQuery.event.triggered
Source File: http://localhost/js/jquery1.7.js Line: 2924
Warning: reference to undefined property elem[jQuery.expando]
Source File: http://localhost/js/jquery1.7.js Line: 1719
Что я должен изменить, чтобы адаптироваться с последней версией JQuery. Спасибо.
Добро пожаловать в переполнение стека! «Это не работает» - это * никогда * хорошее описание ошибки. Пожалуйста, опишите, что пошло не так, какие сообщения об ошибках вы получите и т. Д. –
так где же именно сбой? вы можете добавить некоторый файл console.log в код, чтобы узнать, и какая последняя версия jquery, которую вы пытаетесь использовать, и как вы ее загрузили? – alonisser
Не могли бы вы более подробно рассказать, как он не работает и что такое ваш тестовый пример? Вы тестируете одни и те же данные на одном и том же коде, и единственная разница - это версия jQuery, правильно? –