Я пытаюсь, напрасно, иметь возможность передать дополнительные параметры обратно к методу обратного вызова успеха, который я создал для успешного вызова ajax. Немного фона. У меня есть страница с несколькими динамически создаваемыми парами текстового поля/выбора. Каждая пара имеет динамически назначенное уникальное имя, такое как name= "unique-pair-1_txt-url" и name= "unique-pair-1_selectBox", тогда вторая пара имеет то же самое, но префикс отличается.
В попытке повторного использования кода я обработал обратный вызов, чтобы взять данные и ссылку на selectbox. Однако при обратном вызове ссылка на selectbox возвращается как "undefined". Я читал здесь, что это должно быть выполнимо. Я даже попытался воспользоваться опцией "контекст", но все равно ничего. Вот блок script, который я пытаюсь использовать:
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
$j.ajax({
type: "GET",
url: $j(urlValue).val(),
dataType: "jsonp",
context: selectBox,
success:function(data){
loadImagesInSelect(data)
} ,
error:function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);
}
</script>
Из того, что я прочитал, я чувствую, что я рядом, но я просто не могу погладить недостающее звено. Пожалуйста, помогите в типичных ниндзя. ТИА
**** **** UPDATE Ник - настоящий ниндзя. Они должны придумать новый значок для этого! Его ответ ниже делает трюк. Поскольку он упоминает это 1.4, но я могу жить с этим. Вот мой последний код, который работает для любых ниндзя в обучении (и моей будущей ссылки):
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
$j.ajax({
type: "GET",
url: urlValue+ '?callback=?',
dataType: "jsonp",
context: selectBox,
success: jQuery.proxy(function (data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);
}, selectBox),
error:function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
</script>