#javascript #jquery #python #ajax #python-3.x
#javascript #jquery #python #ajax #python-3.x
Вопрос:
Я пытаюсь реализовать пример ajax / python, но когда отображается предупреждение, сообщение просто «undefined», а не вывод, который я должен получать в соответствии с руководством. Все, что я смог найти, указывает на то, что проблема заключается в том, что javascript не получает ответ от веб-сервера, но я не могу понять почему. Я довольно новичок в Javascript, поэтому буду признателен за любую помощь.
HTML (‘test.html ‘)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function()
{
$('#clickme').click(function(){
alert('Im going to start processing');
$.ajax({
url: "/scripts/py_test.py",
type: "post",
datatype:"json",
data: {'key':'value','key2':'value2'},
success: function(response){
alert(response.message);
alert(response.keys);
}
});
});
});
</script>
</head>
<body>
<button id="clickme"> click me </button>
</body>
</html>
Python (scripts/py_test.py )
#!/usr/bin/env python
import sys
import json
import cgi
fs = cgi.FieldStorage()
sys.stdout.write("Content-Type: application/json")
sys.stdout.write("n")
sys.stdout.write("n")
result = {}
result['success'] = True
result['message'] = "The command Completed Successfully"
result['keys'] = ",".join(fs.keys())
d = {}
for k in fs.keys():
d[k] = fs.getvalue(k)
result['data'] = d
sys.stdout.write(json.dumps(result,indent=1))
sys.stdout.write("n")
sys.stdout.close()
Когда я запускаю скрипт python из терминала, я получаю следующий вывод:
Content-Type: application/json
{
"keys": "",
"message": "The command Completed Successfully",
"data": {},
"success": true
}
Редактировать:
Сетевой монитор моего браузера показывает, что я возвращаю исходный код скрипта python.
Комментарии:
1. И что говорит сетевой монитор в вашем браузере, что возвращается из скрипта python?
2. Вместо
alert()
того, чтобы попробоватьconsole.log()
всеresponse
и посмотреть, что вы получите. Кроме того, включитеfail
обратный вызов ajax-вызова jquery, чтобы узнать, получаете ли вы какую-то ошибку сбоя. Ваши журналы консоли можно просмотреть, если щелкнуть правой кнопкой мыши страницу и нажать «Проверить», чтобы открыть свой инструмент debugger.3. Другим вариантом было бы поместить
debugger
что-нибудь в ваш вызов ajax, чтобы ваш отладчик приостановил этот метод и позволил вам просмотреть, что представляет собой каждая переменная. Попробуйте это и сообщите нам, какие результаты вы получите. Извините, я не могу помочь вам с Python.4. @FlorianHeer Сетевой монитор показывает, что я получаю исходный код из скрипта python обратно.
5. Похоже, вам нужно настроить свой веб-сервер для выполнения cgi. Вы используете локальный сервер или используете файловый протокол?