Получение ошибки 'Broken Pipe' при AJAX-запросе в Django
Я постоянно сталкиваюсь с ошибкой "Broken pipe" при выполнении AJAX-запроса в Django. Запрос предназначен для получения текста и выбранных языков, а также других данных, затем перевести их в представлениях, а переведенный текст отобразить в окне вывода.
Вот мой фрагмент кода AJAX:
Вот код AJAX:
var outputTextarea = document.getElementById("output-textarea");
// AJAX request
$(document).ready(function () {
$('.translate-button').click(function () {
// Retrieve input data
var fromLanguage = document.getElementById("from-language-selectbox").selectedOptions[0];
var toLanguage = document.getElementById("to-language-selectbox").selectedOptions[0];
var isFlashcard = document.getElementById("is-flashcard-switch2").checked;
var selectedDecks = document.getElementById("decks-list-selectbox").selectedOptions;
console.log(selectedDecks)
var selectedDeckValues = [];
var inputText = document.getElementById("input-textarea").value;
console.log(inputText);
for (var i = 0; i < selectedDecks.length; i++) {
selectedDeckValues.push(selectedDecks[i].textContent);
}
console.log(selectedDeckValues);
var outputTextarea = document.getElementById("output-textarea");
$.ajax({
url: '{% url "mainapp:translator" %}',
data: {
'input_text': inputText,
'is_flashcard': isFlashcard,
'decks': selectedDeckValues,
'from_language': fromLanguage.textContent,
'to_language': toLanguage.textContent,
},
dataType: 'json',
success: function (data) {
console.log("success");
outputText = data.output_text;
outputTextarea.textContent = outputText;
},
error: function (xhr, status, error) {
console.log("Error occurred: " + error);
}
});
});
});
А вот и вид:
def translator(request):
"""View for translatation."""
if request.headers.get("x-requested-with") == "XMLHttpRequest":
#Retrieve data from AJAX request
input_text = request.GET.get("input_text")
is_flashcard = request.GET.get("is_flashcard")
if is_flashcard == "true":
is_flashcard = True
else:
is_flashcard = False
decks = ["superdeck", "talja"] #request.GET.get("decks")
from_language = Language.objects.get(name=request.GET.get("from_language"))
from_language_symbol = from_language.symbol
to_language = Language.objects.get(name=request.GET.get("to_language"))
to_language_symbol = to_language.symbol
#Translate text and create Translation object
output_text = ts.translate_text(query_text=input_text, translator="google",from_language=from_language_symbol, to_language=to_language_symbol)
translation = Translation(input_text=input_text, output_text=output_text,is_flashcard=is_flashcard, user=request.user, from_language=from_language, to_language=to_language)
translation.save()
# Create Flashcard objects and manage all selected decks
if is_flashcard:
for deck_name in decks:
deck = Deck.objects.get(name=deck_name)
flashcard = Flashcard(front=input_text, back=output_text, user=request.user, deck=deck)
flashcard.save()
return JsonResponse({"output_text":output_text})
else:
translator_form = TranslatorForm(request.user)
input_text = ""
output_text = ""
return render(request, "mainapp/translator.html", {"translator_form":translator_form, "input_text":input_text, "output_text":output_text})
В случае возникновения вопросов, не стесняйтесь спрашивать, я предоставлю необходимые части кодов и т.д.