Zaimplementowałem żądanie Ajax na mojej stronie i dzwonię do punktu końcowego ze strony internetowej. Zawsze zwraca 200 OK , ale jQuery wykonuje zdarzenie błędu.
Próbowałem wielu rzeczy, ale nie mogłem rozwiązać problemu. Dodaję mój kod poniżej:
Kod jQuery
var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
type: 'POST',
url: 'Jqueryoperation.aspx?Operation=DeleteRow',
contentType: 'application/json; charset=utf-8',
data: json,
dataType: 'json',
cache: false,
success: AjaxSucceeded,
error: AjaxFailed
});
function AjaxSucceeded(result) {
alert("hello");
alert(result.d);
}
function AjaxFailed(result) {
alert("hello1");
alert(result.status + ' ' + result.statusText);
}
Kod C # dla JqueryOpeartion.aspx
protected void Page_Load(object sender, EventArgs e) {
test();
}
private void test() {
Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}
Potrzebuję ("Record deleted")
ciągu po udanym usunięciu. Jestem w stanie usunąć treść, ale nie otrzymuję tej wiadomości. Czy to prawda, czy robię coś złego? Jaki jest właściwy sposób rozwiązania tego problemu?
TwitterId
, to musisz przekazać obiekt dodata
, nie ciąg znaków:data: {TwitterId: row}
.Odpowiedzi:
jQuery.ajax
próbuje przekonwertować treść odpowiedzi w zależności od określonegodataType
parametru lubContent-Type
nagłówka wysłanego przez serwer. Jeśli konwersja się nie powiedzie (np. Jeśli JSON / XML jest nieprawidłowy), wywołanie zwrotne błędu zostanie uruchomione.Twój kod AJAX zawiera:
W tym przypadku jQuery:
Kod po stronie serwera zwraca fragment kodu HTML ze
200 OK
statusem. jQuery spodziewał się prawidłowego JSON i dlatego narzeka na wywołanie zwrotne błęduparseerror
.Rozwiązaniem jest usunięcie
dataType
parametru z kodu jQuery i zwrócenie kodu po stronie serwera:Wolałbym jednak zwrócić odpowiedź JSON i wyświetlić komunikat w wywołaniu zwrotnym sukcesu:
źródło
$.ajax
możesz spróbować na dwa sposoby (i) zamiast ciebie$.getScript
. Wewnątrz skryptu C # po stronie serwera wystarczy umieścićalert('Record Deleted');
(bez<script>
znacznika) i ustawić ContentType skryptu C # natext/javascript
.$.ajax
może również działać, ale nie pamiętam, jak to możliwe, że po prostu musisz się zmienićdataType: 'script',
. Być może nie będziesz już potrzebować modułu obsługi sukcesu.$.post
. W takim przypadku jquery zgaduje typ danych, a następnie błędy, gdy nie można go przeanalizować . To naprawdę paskudna, trudna do znalezienia gotcha. Naprawiłem to, ustawiając typ danych na"text"
.Miałem trochę szczęścia w używaniu wielu rozdzielonych spacjami
dataType
s ( jQuery 1.5+ ). Jak w:źródło
Musisz po prostu usunąć dataType: „json” w wywołaniu AJAX
źródło
To tylko dla rekordu, ponieważ wpadłem na ten post, gdy szukałem rozwiązania mojego problemu, który byłby podobny do OP.
W moim przypadku nie udało się zrealizować mojego żądania jQuery Ajax z powodu zasad tego samego pochodzenia w Chrome. Wszystko zostało rozwiązane, gdy zmodyfikowałem mój serwer (Node.js), aby:
Dosłownie kosztowało mnie to godzinę uderzenia głową o ścianę. Czuję się głupio ...
źródło
Myślę, że twoja strona aspx nie zwraca obiektu JSON. Twoja strona powinna zrobić coś takiego (page_load)
Spróbuj także zmienić AjaxFailed:
textStatus
powinien dać ci rodzaj błędu, który otrzymujesz.źródło
Napotkałem ten problem ze zaktualizowaną biblioteką jQuery. Jeśli metoda usługi nic nie zwraca, oznacza to, że typem zwrotu jest
void
.Następnie w swojej rozmowie Ajax proszę wspomnieć
dataType='text'
.To rozwiąże problem.
źródło
Musisz tylko usunąć
dataType: 'json'
z nagłówka, jeśli zaimplementowana metoda usługi sieci Web jest nieważna.W takim przypadku wywołanie Ajax nie oczekuje, że będzie miał zwracany typ danych JSON.
źródło
Użyj następującego kodu, aby upewnić się, że odpowiedź jest w formacie JSON (wersja PHP) ...
źródło
Miałem ten sam problem. Mój problem polegał na tym, że mój kontroler zwracał kod stanu zamiast JSON. Upewnij się, że kontroler zwraca coś takiego:
źródło
Mam podobny problem, ale kiedy próbowałem usunąć typ danych: „json”, nadal mam problem. Mój błąd wykonuje się zamiast sukcesu
źródło
Inną rzeczą, która popsuła mi rzeczy, było użycie
localhost
zamiast 127.0.0.1 lub odwrotnie. Najwyraźniej JavaScript nie obsługuje żądań od jednego do drugiego.źródło
Zobacz . To także podobny problem. Pracowałem, próbowałem.
Nie usuwaj
dataType: 'JSON',
Uwaga: echo tylko JSON Formate w pliku PHP, jeśli używasz tylko php echo, kod zwrotu ajax 200
źródło
Miałem ten sam problem. Stało się tak, ponieważ moja odpowiedź JSON zawiera pewne znaki specjalne, a plik serwera nie został zakodowany za pomocą UTF-8, więc wywołanie Ajax uznało, że nie była to poprawna odpowiedź JSON.
źródło
Jeśli zawsze zwracasz JSON z serwera (bez pustych odpowiedzi),
dataType: 'json'
powinno działać icontentType
nie jest potrzebne. Upewnij się jednak, że wyjście JSON ...jQuery AJAX rzuci „parseerror” na prawidłowy, ale nieserializowany JSON!
źródło
Twój skrypt wymaga zwrotu w typie danych JSON.
Spróbuj tego:
źródło
Spróbuj śledzić
LUB
Używaj podwójnych cudzysłowów zamiast pojedynczych cudzysłowów w obiekcie JSON. Myślę, że to rozwiąże problem.
źródło