ошибка при запросе ajax с помощью python

#javascript #python #ajax

#javascript #python #ajax

Вопрос:

У меня есть html-файл со следующими строками кода

 <script>
function ButClick(){
    $.ajax({
        url: "../cgi-bin/test.py",
        type: "POST",
        data: {var1: 'Value 1', var2: 'Value 2'},
        success: function(response){$("#TestDiv").html(response);}
    })
}
</script>

<form><input type='button' onclick="ButClick()" value="Click Me!" /></form>
<div id='TestDiv'></div>
  

и у меня есть скрипт Python 3.4 в test.py:

 #![...]/custom/bin/python
# -*- coding: iso-8859-15 -*-
import cgi
import cgitb
cgitb.enable()
data=cgi.FieldStorage()
print("Var1-Data lautet: "   data['var1'].value)
  

Я просто хочу выполнить запрос ajax при нажатии кнопки. Но я получаю следующую ошибку:

 Traceback (most recent call last):
File "test.py", line 12, in amp;lt;moduleamp;gt;
print("Var1-Data lautet: "   data['var1'].value)
File "[...]/custom/lib/python3.4/cgi.py", line 598, in __getitem__ raise KeyError(key)
KeyError: 'var1'
  

Может кто-нибудь, пожалуйста, помочь мне найти ошибку?

Комментарии:

1. Вы пытались выполнить сброс data на консоль в python?

2. Я не так часто использовал python, но я думаю, что если вы измените data['var1'].value data.getvalue('var1') его, все будет в порядке

3. @GovindSinghNagarkoti javascript будет принимать имена, не заключенные в кавычки, в формате json, если они являются допустимыми идентификаторами js

4. @ThinkDifferent Его код выглядит как пример в начале docs.python.org/2/library/cgi.html

5. @ThinkDifferent извините, это тоже не сработает…

Ответ №1:

теперь я нашел решение своей проблемы. Там я использую не CGI, а PHP и Pyton. Конечно, это решение не очень элегантное, но оно делает то, что я хочу. Кроме того, я должен выполнить некоторые запросы MySQL. В целом, я могу, кстати, увеличить производительность всей страницы.

Теперь мой код выглядит так:

index.html

 <html>
<head>
<title>TEST</title>
<script src="jquery.js"> </script>
</head>

<body>
<script>
      function ButClick(){
      var TestVar = "'Hallo! This is a test'";
      $.post('test.php',{var:TestVar},function(response) $('#TestDiv').html(response)});
    }
</script>

    <form><input type='button' onclick="ButClick()" value="Click Me!" /></form>
    <div id='TestDiv'></div>  </body>

</body>


</html>
  

test.php

 <?php
$param1=$_POST['var'];
$command="python test.py $param1 $param2";  
$buffer='';
ob_start(); // prevent outputting till you are done
passthru($command);

$buffer=ob_get_contents();

ob_end_clean();

echo "PHP and".$buffer;

?>
  

test.py

 #path to your python interpreter
#!/usr/bin/python   
#sys module to get access to the passed in parameters
import sys
# the first parameters in sys.argv[0] is the path to the current executing python script
param1=sys.argv[1]
PyAnswer="python back: "  param1
# send the result back to php
print (PyAnswer)
  

Я надеюсь, что смогу помочь с этим сообщением некоторым другим людям!