3

jsonでjQueryに対する応答を取得しています。ロジックは正常に機能しますが、データを適切にエンコードするように彼に指示することはできません(üäöなど)。

私はSOでこの質問を検索して見つけました。これはgetJSON、を通常のAJAX呼び出しに変更することを提案しました。私はそれを行い、setContentTypeオプションを追加しましたが、それでも、äüöが表示されるとすぐに奇妙な兆候が現れます。

それを解決する方法について何かアイデアはありますか?

$(function() {
    $("#cnAntragsteller").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: "http://localhost/api",
                dataType: "jsonp", 
                data: {
                    search: request.term
                },
                success: function(data) {
                    response($.map(data.persons, function(item) {
                        return {
                            label: item.cn + " (PN: " + item.imPersonalNumber + ")",
                            value: item.cn,
                            pn: item.imPersonalNumber,
                            cn: item.cn,
                            cc: item.imCostCenter,
                            jb: item.imJobTitle,
                            jbd: item.imJobTitleDescription
                        }
                    }));
                }
            });
        },

        minLength: 0,
        select: function(event, ui) {
            $("#pnAntragsteller").val(ui.item.pn);
            $("#jbAntragsteller").val(ui.item.jb);
            $("#jbdAntragsteller").val(ui.item.jbd);
            $("#ouKostenstelle").val(ui.item.cc);


            $.ajax({
                url: "http://localhost/api",
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: {
                    pn: ui.item.pn
                },
                success: function(data) {
                    $("#cnLeiter").val(data.cn);
                }
            });
            }
        })
})

応答ヘッダー(最初のヘッダーはデータを表示せず、出力にリダイレクトするだけです):

Content-Length:0
Date:Tue, 22 May 2012 06:13:41 GMT
Location:http://localhost/api/redirection
Server:Apache-Coyote/1.1

Content-Length:177
Content-Type:text/html
Date:Tue, 22 May 2012 06:13:41 GMT
Expires:0
Server:Apache-Coyote/1.1

注:これらは応答ヘッダーのみですが、要求ヘッダーにも重要な情報が含まれていますか?

4

2 に答える 2

5

すでに問題を解決しているように見えますが、次の2つの点を指摘しておくとよいでしょう。

  1. jQuerygetJSONはデフォルトでUTF-8を使用しています。あなたが与えたページで受け入れられた答えは、UTF-8以外のエンコーディングが必要な場合は、を使用できるということ$.ajax()でした。実際、そのページの別の回答が述べているように、を使用しても、エンコーディングを設定するためにgetJSON使用できます。$.ajaxSetup

  2. JSPヘッダーのcontentTypeをに変更することをお勧めします'application/json; charset=utf-8'。これは、jQuery側が期待していることだからです。物事を一貫させることは常に良いことです。

于 2012-05-22T18:48:00.503 に答える
0

JSPヘッダーを追加することで解決しました(JSPがわからないため、グーグルが必要でした)。これをページインポートタグに追加すると、問題が解決しました。

<%@ page import="someEngine"  contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%>
于 2012-05-22T06:46:15.753 に答える