У меня есть этот питон CGI скрипт, который я получил, и работает, используя следующую команду:Аякса параметры переходят к питон скрипт
python3 -m http.server --cgi 8000
важную часть сценария питона заключается в следующем:
parameter = cgi.FieldStorage()
artiest = parameter.getvalue("artiest")
rijen_aantal = parameter.getvalue("rijen")
kolommen_aantal = parameter.getvalue("kolommen")
Теперь что Я хотел бы сделать это в моем html/javascript, я хотел бы передать значения, которые я получаю из формы, в свой скрипт cgi.
В HTML я написал следующую форму с помощью начальной загрузки:
<form class="form-inline" role="form" method="POST" action="cgi-bin/schuifpuzzel.py">
<div class="form-group">
<label for="artiest">Artiest:</label>
<input type="text" class="form-control margin-right" id="artiest">
</div>
<div class="form-group">
<label for="rij">Rijen:</label>
<input type="number" class="form-control margin-right" id="rij">
</div>
<div class="form-group">
<label for="kolom">Kolommen:</label>
<input type="number" class="form-control margin-right" id="kolom">
</div>
<button type="submit" class="btn btn-default">Submit</button>
И в JavaScript Я написал следующий код, который я звоню в заголовке HTML.
$(function() {
var artiest = document.getElementById("myForm").elements[0].value;
var rijen = document.getElementById("myForm").elements[1].value;
var kolommen = document.getElementById("myForm").elements[2].value;
$.ajax({
url: 'cgi-bin/schuifpuzzel.py',
type: 'post',
datatype: "json",
data: JSON.stringify({'artiest': artiest, "rijen": rijen, "kolommen": kolommen}),
success: function(response) {
alert(response);
}
})
});
но это почему-то не работает. Все, что он делает, это загрузить .py.
Что я здесь делаю неправильно?
UPDATE:
новая проблема. Я думаю, что проблема публикации решена.
Но тогда я получаю следующее сообщение об ошибке:
No 'Access-Control-Allow-Origin' header is present on the requested resource
Я решил, что с помощью раствора, отправленный yoshyosh на этом post
Но теперь я получаю эту ошибку по некоторым причинам:
Я не уверен, почему, потому что путь к моему сценарию верен?
Я думаю, проблема заключается в том, что данные, отправляемые вашим AJAX-вызовом, являются JSON, а не образуют закодированные пары ключ-значение. То, как вы получаете доступ к значениям в вашем CGI-скрипте, требует отправки данных в виде пары ключей-значений. – ErikR
Итак, как бы я это сделал? Потому что я просто копировал решение аналогичного вопроса – Joey