Я пытаюсь настроить вызов AJAX, чтобы вызвать представление Django, выполнить некоторые вычисления и затем вернуть результат на мою страницу html. К сожалению, вид, кажется, не достигнут. Не уверен, что не так, но у меня очень ограниченный AJAX опыт. Идея состоит в том, что когда мой слайдер видит изменение в значении, он запускает вызов AJAX. Триггер, кажется, работает, поскольку он отображает мое всплывающее окно с предупреждением. Но это все, больше ничего не происходит. Не могли бы вы помочь?
Вот мой HTML / AJAX код:
<div class="slider-wrapper">
<span>Option 1 Imp. Vol.</span>
<input class="toChange" id="rangeInput" name="rangeInput" type="range" value="{{Sigma}}" min="0" max="150" step="0.1" oninput="amount.value=rangeInput.value" />
<input class="toChange" id="amount" type="number" value="{{Sigma}}" min="0" max="150" step="0.1"oninput="rangeInput.value=amount.value" />
</div>
<label>Ajax Test:</label>
<span id="Atest">
<script type="text/javascript">
function inputChange () {
var Sigma = document.getElementById("rangeInput").value;
alert();
$.ajax({
url: '/finance/templates/optionstrategies/',
type: 'POST',
data: {'Sigma': Sigma,
},
//dataType: "json",
success: function(optionVal) {
document.getElementById("Atest").innerHTML = optionVal;
}
});
}
$(".toChange").change(inputChange);
</script>
А вот мой view.py:
def optionStrategies(request):
errors=''
if request.method == 'POST' and request.is_ajax():
print('ok')
Type = request.POST.get('Type')
V = request.POST.get('V')
Q = request.POST.get('Q')
S = request.POST.get('S')
K = request.POST.get('K')
r = request.POST.get('r')
t = request.POST.get('t')
Sigma = request.POST.get('rangeInput')
BS = BlackScholes(Type = 'Vanilla', S = float(S), K = float(K), sig = float(Sigma)/100, r = float(r)/100, t = float(t)/365)
optionVal = BS[0]
print(optionVal)
optionVal = json.dumps(optionVal)
return HttpResponse(optionVal, content_type='application/json')
Edit1: добавление код urls.py:
urlpatterns = [
url(r'^$',views.home, name="homepage"),
path('optionstrategies/', views.optionStrategies, name="optionstrategies"),
path('impliedvolatility/', views.impliedVolatilityHtml, name="impliedvolatility"),