我遇到了 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 中处理重定向到实际输出的源?
总结
- jquery 发送这样的数据
http://source/persons.ivp?callback=jquery87346&search=John
- 工作流工具获取参数、处理它们并重定向到新的 url
http://source/L84FJ8LA4LS/CMSObject.ivc?taskId=84&processId=LKIA47&pid=KS4U6T84LSZ
- 新 URL 包含参数的结果
John
302 permanently moved
由于重定向,jQuery 不处理结果。
我无法更改此工作流工具的行为。所以我必须用 jQuery 来解决这个问题。
更新:我注意到输出 JSON 数据的 JSP 文件对我的输出进行 html 编码,这似乎扰乱了 jquery。有谁知道我如何在没有html 编码的情况下在 JSP 中打印数据?
当我查看输出页面的源代码时它的外观:
jquery1234({"total":"2", "persons":[{"cn":"John Smith", "imPersonalNumber":"5616"},{"cn":"Peter Jackson", "imPersonalNumber":"7016743"}]})
正常的样子:
jquery1234({"total":"2", "persons":[{"cn":"John Smith", "imPersonalNumber":"5616"},{"cn":"Peter Jackson", "imPersonalNumber":"7016743"}]})