2016-05-07 184 views
1

我有這條巨蟒CGI腳本,我站了起來,用下面的命令運行:AJAX傳遞參數給Python腳本

python3 -m http.server --cgi 8000 

的python腳本的重要組成部分,是這樣的:

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()表單上發送的數據爲FORMDATA,而不是JSON。

$.ajax({ 
    ... 
    data: $('.form-inline').serialize(), 
    ... 
})