【发布时间】:2013-06-02 20:51:33
【问题描述】:
我正在尝试实现城市的自动完成形式,其中包含 JSON 数组和自动完成函数的 Web 服务器,该函数返回来自城市数组的城市名称的 JSON 完成数组,但我似乎没有从我的 Ajax 调用中得到任何响应。我的 Ajax 调用有问题吗?
我正在尝试将名为 "term" 的表单数据提交到 url "/suggestjson" 中,然后在 html 文件的正文中显示返回的 JSON
我知道网络服务器可以正常工作,因为在浏览器中输入“localhost:8000/suggestjson?term=a”会返回所有以“a”开头的城市(例如阿德莱德),点击http://postimg.org/image/gki6kct23/ 即可查看
HTML 表单
</head>
<body>
<form>
<fieldset><legend>Cities</legend>
<input type='text' name='city' id='city'>
</form>
jQuery
$('document').ready(function() {
var term = $('input[name=city]');
$.ajax({
url: "/suggestjson",
type: "GET",
dataType: "json",
data: term,
success: function (data) {
$("body").append(data);
}
});
});
网络服务器
cities = ['New York', 'London', 'Los Angeles',
'Paris', 'San Francisco', 'Adelaide']
if environ['PATH_INFO'] == "/suggestjson":
return suggest_json_application(environ, start_response)
def suggest_json_application(environ, start_response):
//Return JSON array of completions for a city name
form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ)
if form.has_key('term'):
q = form.getvalue("term", "")
matches = [i for i in cities if i.startswith(q)]
else:
matches = []
return json.dumps(matches)
【问题讨论】:
-
试试:
var term = $('input[name=city]').val();还有,data: {'term': term} -
是的,但最终您必须将值而不是 dom 节点提供给 ajax 提交。
-
您在控制台中看到任何 500 吗?另外,
start_response是什么? -
还有一个问题——如果你这样做
print json.dumps(matches),它会给出正确的答案吗? -
这意味着这是错误所在。调试程序以查看输入是否正确。
form.has_key('term')输出什么?
标签: jquery python ajax json autocomplete