2

JSON配列と、都市の配列から都市名の補完のJSON配列を返すオートコンプリート関数が配置されているWebサーバーを使用して、都市のオートコンプリート形式を実装しようとしていますが、何も得られないようです私のAjax呼び出しからの応答。私の Ajax 呼び出しに何か問題がありますか?

"term" というフォーム データを URL "/suggestjson" に送信し、返された JSON を html ファイルの本文に表示しようとしています。

ブラウザーに「localhost:8000/suggestjson?term=a」と入力すると、「a」で始まるすべての都市 (アデレードなど) が返されるため、Web サーバーが機能していることはわかっていますそれを見る

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)
4

2 に答える 2

2

/suggestion期待どおりの JSON が得られることを確認しましたか? 結果を貼り付けますか?

あなたtermはあるべきでvar term = $("input[name=city]").val()あり、あなたdataはあるべきですdata: 'term='+term

于 2013-06-06T18:08:25.600 に答える
2

プロパティを正しく設定していません。data入力の値でオブジェクトを作成してみてください:

$.ajax({
    url: "/suggestjson",
    type: "GET",
    dataType: "json",
    data: {term: term.val()}, //get the value of the input and put it in a data object
    success: function (data) {
        //data here are the results coming from the server, format this as HTML and then append
       var htmlData = ''
       .... formatting here ....
       $('body').append(htmlData);

    }    
}); 
于 2013-06-06T18:05:39.770 に答える