2016-05-07 2 views
1

У меня есть этот питон 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

Но теперь я получаю эту ошибку по некоторым причинам: enter image description here

Я не уверен, почему, потому что путь к моему сценарию верен?

enter image description here

+0

Я думаю, проблема заключается в том, что данные, отправляемые вашим AJAX-вызовом, являются JSON, а не образуют закодированные пары ключ-значение. То, как вы получаете доступ к значениям в вашем CGI-скрипте, требует отправки данных в виде пары ключей-значений. – ErikR

+0

Итак, как бы я это сделал? Потому что я просто копировал решение аналогичного вопроса – Joey

ответ

0

Использование .serialize() на форме, чтобы отправить данные в виде данных формы, а не как JSON.

$.ajax({ 
    ... 
    data: $('.form-inline').serialize(), 
    ... 
}) 
Смежные вопросы