Tworzę prosty post JSON na serwer i pobieram tylko na wartości logiczne. Problem polega na tym, że to wywołanie json znajduje się wewnątrz innej funkcji, która również musi zwrócić tę wartość logiczną.
Mam tutaj dwa rozwiązania
Jakoś zwróć dane z funkcji powrotu JSON, a następnie zwróć je ponownie z funkcji opakowującej (kod, który mam tutaj nie działa, nie mogę wymyślić, jak zwrócić dane z "function(){} wewnątrz $.postJSON:
function testZipCode(zipcode, state) { var s; $.postJSON("/Cart/ZipTest", { state: state, zipCode: zipcode }, function (data) { if (!data.ok) { s = false; } s = true; }); return s; }
}
Poczekaj, aż POST się zakończy, a następnie zwróć wynik w ten sposób: (błąd, który tutaj pojawia się, polega na tym, że wywołam return przed zakończeniem testu POST, więc responseText ma wartość null. Czy ktoś może pomóc?
var result = $.postJSON("/Cart/ZipTest", { state: state, zipCode: zipcode }, function (data) { if (!data.ok) { //do something } }); return $.parseJSON(result.responseText).ok;
2 odpowiedzi
Zwróć wywołanie ajax jako odroczony obiekt i zrób coś w funkcji zwrotnej:
function someOtherFunction() {
testZipCode('90102', 'FL').done(function(data) {
if (!data.ok) something = false;
});
}
function testZipCode(zipcode, state) {
return $.getJSON("/Cart/ZipTest", {state: state, zipCode: zipcode} );
}
Zrób coś takiego ...
{
state: state,
zipCode: zipcode
}, function (data, count) {
if (!data.ok) {
getTheData(data); //do something
}
});
return $.parseJSON(result.responseText).ok;
function getTheData(data)
{
//do things with data here
}
Podobne pytania
Nowe pytania
jquery
jQuery to biblioteka JavaScript, rozważ także dodanie tagu JavaScript. jQuery to popularna biblioteka JavaScript działająca w różnych przeglądarkach, która ułatwia przechodzenie przez Document Object Model (DOM), obsługę zdarzeń, animacje i interakcje AJAX, minimalizując rozbieżności między przeglądarkami. Pytanie oznaczone tagiem jQuery powinno być powiązane z jQuery, więc jQuery powinno być używane przez dany kod i przynajmniej elementy związane z użyciem jQuery muszą znajdować się w pytaniu.