Mam poniżej kod, który odczytuje nazwę pliku poprzeglądaj i wysyła go na inną stronę za pomocą POST. jeśli mam alert po $ .post, to działa dobrze. Jeśli usunę wiadomość alertu, wiadomość nie przesyła nazwy pliku na inną stronę.
<input type="file" name="fileupload" id="fileupload" value="">
// Kod Jquery
$("#fileupload").change(function() {
if ($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
filename: $("#fileupload").val(),
processId: < %= processId % >
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn"t works**
}
location.reload();
});
Odpowiedzi:
2 dla odpowiedzi № 1Trudno mi było opublikować dane pliku za pomocą jQuerywięc stworzyłem formularz i dodałem go do ramki i użyłem starych dobrych metod formularzy. Nie jestem pewien, co dokładnie próbujesz osiągnąć (opublikuj dane pliku lub tylko nazwę pliku), ale w każdym razie tutaj kilka wskazówek.
Mój zakład byłby taki, gdy wprowadzisz alert,skrypt wstrzymuje czas kliknięcia OK, więc ma czas, aby rzeczywiście uzyskać odpowiedź z postu. Gdy go zdejmiesz, skrypt będzie kontynuował wykonywanie, zanim klient otrzyma odpowiedź.
Zmodyfikuj kod, aby następna akcja znalazła się w wywołaniu zwrotnym (uruchomi się po otrzymaniu odpowiedzi); $ .post (nazwa_pliku, wartość, wywołanie zwrotne);
Ten kod powinien działać:
<input type="file" name="fileupload" id="fileupload" value="">
// Jquery code
$("#fileupload").change(function() {
if($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
filename: $("#fileupload").val(),
processId: <%=processId%>
},function(data){
location.reload(); //THIS IS THE CALLBACK
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn"t works**
}
});
Zwróć uwagę na funkcję (dane) {} w trzecim argumencie. dane reprezentują zwróconą wartość, więc możesz użyć jej do sprawdzenia, czy skrypt działa poprawnie. Musisz po prostu zwrócić wartość, może to być cokolwiek, używam 0 i 1 jako prawdziwe lub fałszywe.
Więc zmieniając połączenie zwrotne za pomocą
if(data ==1) location.reload();
else alert("something went wrong");
Będziesz mógł powiadomić użytkownika, że coś pójdzie nie tak.
jQuery post jest niesamowitą rzeczą, callback to także świetne narzędzie .. radość
0 dla odpowiedzi nr 2
Może coś takiego?
$("#fileupload").change(function() {
if ($("#fileupload").val().length > 0) {
$.post("ReadExcel.jsp", {
data: {
"variable-name" : $("#fileupload").val()
},
processId: < %= processId % >
});
alert($("#fileupload").val()); // **If I remove this alert, then the code doesn"t works**
}
location.reload();
});