-1

我正在尝试使用 JSON 数组和自动完成功能来实现一个包含城市列表的表单。

我的 ajax 调用成功并给出了预期的成功警报,但我仍然没有得到 JSON 数组数据。

问题是我的Suggest_json_application函数在'if form.has_key('term')'语句中失败并给出消息“form has no key”。

如何通过 ajax 调用正确地将表单数据传递给函数term

HTML 表单

</head>
<body>
<form>
  <fieldset><legend>Cities</legend>
  <input type='text' name='term' id='term'>
</form>

jQuery

$('document').ready(function() {

    var term = $('#term').val();

    $.ajax({
        url: "/suggestjson",
        type: "POST",
        dataType: "json",
        data: JSON.stringify({'term': term}),
        success: function (data) {
            alert('success');
            console.log( 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'):
        print "form has key"
        q = form.getvalue("term", "")
        matches = [c for c in cities if c.lower().startswith(q.lower())]
    else:
        print "form has no key"
        matches = []

    return json.dumps(matches)
4

3 回答 3

0

目前您正在将整个 html 元素发送到服务器。调用val()函数来获取元素的值,

还可以使用 id 选择器轻松访问元素,

像这样:

var term = $('#term').val();
于 2013-06-07T05:55:11.667 回答
0

使用 val() :-在此处查看详细信息

    var term = $('#term').val();

也应该是 ajax 中的数据参数

    data : {term: term}
于 2013-06-07T05:57:10.660 回答
0

请尝试将“数据”选项更改为 ajax 调用中的对象,如下所示

$('document').ready(function() {

  var term = $('input[name=city]');

  $.ajax({
    url: "/suggestjson",
    type: "GET",
    dataType: "json",
    data: {'term': term},
    success: function (data) {
        alert('success');
        console.log( data );

    }     
  }); 
});    
于 2013-06-07T05:58:20.500 回答