-1

JSON 配列とオートコンプリート機能を使用して、都市のリストを含むフォームを実装しようとしています。

私の ajax 呼び出しは成功し、予期される成功アラートが表示されますが、まだ JSON 配列データを取得していません。

問題は、私のSuggest_json_application関数が「if form.has_key('term')」ステートメントで失敗し、「フォームにキーがありません」というメッセージが表示されることです。

キーを使用して、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 に答える