1

jquery のオートコンプリート機能に問題があります。リダイレクトしないソースを指定すると、オートコンプリートは問題なく動作します (これは私のテスト環境でした)。本番環境では、これはワークフロー ツールで機能する必要があります。

jquery ソースのページもこのワークフロー ツールで記述されており、データを出力します。唯一の問題は、この出力ページを GET パラメーターで呼び出すと、JSON の結果を含む別のページにリダイレクトされることです。

提案が得られないため、jqueryには少し問題があるようです。

これは、入力フィールドの jquery です。

$(function() {
        $("#unameLeiter").autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "http://localhost:8082/ivy/pro/designer/ldapCurrent2/137553578A7A2B3F/persons.ivp",
                    dataType: "jsonp", 
                    data: {
                        search: request.term
                    },
                    success: function(data) {
                        response($.map(data.persons, function(item) {
                            return {
                                label: item.cn,
                                value: item.imPersonalNumber
                            }
                        })); 
                    }


   });
        },
        minLength: 0,
        select: function(event, ui) {
            $("<div/>").text(ui.item.label + " " + ui.item.value).prependTo("#output");
        }
    })
})

HTML はかなり見栄えが悪いですが、入力フィールドと出力 div しかないので、それは重要な部分ではありません。ネットワーク リクエストを見ると、jquery が「ソース」URL に対して適切な呼び出しを行っているのに、別の URL にリダイレクトされていることがわかります (そこに表示される結果は、私が検索したものです)。

では、実際の出力にリダイレクトする jquery のソースをどのように処理すればよいでしょうか?

要約する

  1. jqueryはこのようにデータを送信しますhttp://source/persons.ivp?callback=jquery87346&search=John
  2. ワークフロー ツールはパラメータを取得して処理し、新しい URL にリダイレクトしますhttp://source/L84FJ8LA4LS/CMSObject.ivc?taskId=84&processId=LKIA47&pid=KS4U6T84LSZ
  3. 新しい URL には、パラメーターの結果が含まれていますJohn
  4. 302 permanently movedリダイレクトのため、jQuery は結果を処理しません。

このワークフロー ツールの動作を変更する方法がありません。したがって、これをjQueryで解決する必要があります。

更新: JSON データを出力する JSP ファイルが出力を html エンコードしていることに気付きました。これが jquery を妨げているようです。HTMLエンコードせずにJSPでデータを印刷する方法を知っている人はいますか?

出力ページのソースコードを表示したときの外観: jquery1234({&quot;total&quot;:&quot;2&quot;, &quot;persons&quot;:[{&quot;cn&quot;:&quot;John Smith&quot;, &quot;imPersonalNumber&quot;:&quot;5616&quot;},{&quot;cn&quot;:&quot;Peter Jackson&quot;, &quot;imPersonalNumber&quot;:&quot;7016743&quot;}]})

通常の外観:

jquery1234({"total":"2", "persons":[{"cn":"John Smith", "imPersonalNumber":"5616"},{"cn":"Peter Jackson", "imPersonalNumber":"7016743"}]})
4

1 に答える 1

1

結局のところ、問題はリダイレクトではありませんでした。ツールがデータ全体をエスケープしたという事実でした。彼がそうすることを防ぐ方法を見つけた後、すべてがうまくいきました。

于 2012-05-20T09:43:53.027 に答える