/ / Jquery $ .post problem - jquery

Jquery $ .post issue - jquery

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 № 1

Trudno 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();
});​