Znam ten post jest stary (ER), ale miałem ten sam problem i myślałem, że będę pisać rozwiązanie dla kolejnego faceta. Zasadniczo, podobnie jak w przypadku bfalvretto, funkcje jquery .get() i .post() są asynchroniczne, więc do czasu uzyskania zdalnego adresu URL wartość zmiennej była inna.
Moim rozwiązaniem było wyrzucenie jego części .get() do oddzielnej funkcji, aby ograniczyć zasięg wywołania zwrotnego. Oto, co wymyśliłem:
$("#SomethingClick").click(function(e) {
e.preventDefault();
$.post("..getURL", { id: 123 }, function(data) {
for (i = 0; i < data.rows.length; i++) {
ExternalFunction(data.rows[i].Value1, data.rows[i].Value2);
}
});
});
...
function ExternalFunction(value1, value2) {
$.get("/Core/ContactViewer/" + contactID, function (data2) {
$("someoutputdiv").html("<div>" + value1 + ": " + value2 + "</div>");
});
}
Mam nadzieję, że to pomoże.
Funkcje JavaScript to zamknięcia. Nie trzeba robić nic więcej, niż tylko odwoływać się do zmiennej. –
... powiedział, inną opcją jest wzięcie obiektu 'jqxhr' zwrócony z' $ .get() 'i dodanie do niego właściwości. Ten obiekt będzie dostępny jako trzeci argument wywołania zwrotnego, a także wartość 'this', która umożliwi pobranie właściwości. Pomaga to w ponownym użyciu funkcji. –