jQuery COMO? passar parâmetros adicionais ao retorno de chamada bem-sucedido para a chamada $ .ajax?
Estou tentando, em vão, poder passar parâmetros adicionais de volta ao método de retorno de chamada que criei para uma chamada ajax bem-sucedida. Um pouco de fundo. Eu tenho uma página com vários pares de caixa de texto / caixa de seleção criados dinamicamente. Cada par com um nome exclusivo atribuído dinamicamente, como name = "unique-pair-1_txt-url" e name = "unique-pair-1_selectBox", o segundo par tem o mesmo, mas o prefixo é diferente.
Em um esforço para reutilizar o código, criei o retorno de chamada para levar os dados e uma referência à caixa de seleção. No entanto, quando o retorno de chamada é acionado, a referência à caixa de seleção volta como 'indefinida'. Eu liaqui que deveria ser factível. Eu até tentei tirar proveito da opção 'contexto', mas ainda nada. Aqui está o bloco de scripts que estou tentando usar:
<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>
Pelo que li, sinto que estou perto, mas não consigo apontar o link que está faltando. Por favor, ajude em seus modos furtivos típicos ninjas. TIA
**** ATUALIZAÇÃO **** Nick é um verdadeiro Ninja. Eles deveriam inventar um novo emblema para isso! Sua resposta abaixo faz o truque. Como ele menciona, é 1.4 específico, mas eu posso viver com isso. Aqui está o meu código final que está funcionando para qualquer Ninjas em treinamento (e minha referência futura):
<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>