Sam*_*utz 3 javascript ajax jquery
我基本上在页面上有这个:
<script type="text/javascript">
function refresh_context() {
$("#ajax-context").html("Searching...");
$.get("/ajax/ldap_search.php", {cn: $("#username").val()}, function(xml) {
$("#ajax-context").html($("display", xml).text());
$("#context").val($("context", xml).text());
}, 'xml');
}
$(document).ready(function() {
$("#username").blur(refresh_context);
});
</script>
<input type="text" name="username" id="username" maxlength="255" value="" />
<input type="hidden" name="context" id="context" value=""/>
<div id="ajax-context"></div>
Run Code Online (Sandbox Code Playgroud)
它应该做什么(并且在Firefox上运行正常)是当你在#username字段中输入用户名时,它将运行/ajax/ldap_search.php?cn=$username,它会在我们公司的ldap中搜索用户名并返回它原始上下文和上下文的格式化版本,如下所示:
<result>
<display>Staff -> Accounting -> John Smith</display>
<context>cn=jsmith,ou=Accounting,ou=Staff,ou=Users,o=MyOrg</context>
</result>
Run Code Online (Sandbox Code Playgroud)
格式化版本(显示)转到div#ajax-context并转到隐藏输入#context.(另外, - >实际上是 - ">"(没有空格)).
但是,在IE上,div仍停留在"正在搜索..."上,隐藏的输入值保持空白.
我已经尝试了.get和.post,但都没有工作.我确定它在.get上失败了因为如果我试试这个,我甚至都没有收到警报:
$.get("/ajax/ldap_search.php", {cn: $("#username").val()}, function() {
alert("Check");
});
Run Code Online (Sandbox Code Playgroud)
此外,IE不会给我任何脚本错误.
编辑:添加了"$(document).ready(function(){",我的代码中已经包含了.blur,但我忘了把它包含在我的帖子中.
编辑2:正在发送请求并且apache2正在接收它:
10.135.128.96 - - [01/May/2009:10:04:27 -0500] "GET /ajax/ldap_search.php?cn=i_typed_this_in_IE HTTP/1.1" 200 69
Run Code Online (Sandbox Code Playgroud)
问题出在ldap_search.php文件中.我有这个(基于我在某人的博客上阅读的一个例子):
header("content-type:application/xml-xhtml;charset=utf-8");
Run Code Online (Sandbox Code Playgroud)
它实际上需要这个IE才能正确读取它:
header("content-type:application/xml;charset=utf-8");
Run Code Online (Sandbox Code Playgroud)
上帝,我讨厌IE.