我基本上在页面上有这个:
<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>
它应该执行的操作(在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>
格式化的版本(显示)转到div#ajax-context并转到隐藏的输入#context。(此外,->实际上是-“&gt;”(不带空格))。
但是,在IE上,div仍然停留在“搜索中…”,而隐藏的输入值则保持空白。
我已经尝试过.get和.post两者都没有用。我确信它在.get上失败了,因为如果我尝试这样做,我什至没有得到警报:
$.get("/ajax/ldap_search.php", {cn: $("#username").val()}, function() { alert("Check"); });
另外,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
问题出在ldap_search.php文件中。我有这个(基于我在某人的博客上阅读的示例):
header("content-type:application/xml-xhtml;charset=utf-8");
IE实际需要的是它才能正确阅读它:
header("content-type:application/xml;charset=utf-8");
天哪,我讨厌IE。