【发布时间】:2011-05-07 08:53:11
【问题描述】:
首先,我对此很陌生,我肯定会错误地使用一些行话,但希望你能理解我的意思。 好的,我有一个带有一组数字的 HTML 表,当您单击它们时它们会递增,然后发送到数据库。 我一直在使用这条线
$.get('character/statincrease/stat/'+statname);
或这一行
sendAjaxRequest('http://www.myfakeurl.com/character/statincrease/stat/'+statname);
为了将更新后的变量发送到 php 处理程序,该处理程序又更新 mysql 数据库。 任何一条线都可以与带有 chrome、firefox、safari 和 opera 的 mac 机器完美配合 还有带有chrome的windows7机器,但是当使用带有IE8的同一win7机器时,数据库不会更新。在最长的时间里,我为 ajax 请求和我的变量尝试了很多不同的代码变体,但没有任何效果。我一直在想,也许 IE8 忽略了请求,或者以某种服务器无法理解的方式解析变量,但是通过使用 fiddler,我能够看到 http 请求确实是使用 IE8 执行的。事实上,它在 IE8 和 chrome 中都返回了 200 响应,但是当使用 IE8 时,我能发现的唯一区别是,当使用 chrome 时,会有一个额外的客户端请求标头读取
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Language 读取附加字符
en-us,en;q=0.8
反对 IE8
en-us
来自服务器的响应也不同 使用 chrome 时的内容长度为 4568,内容类型为
text/html;charset=utf-8
它在文本视图中看起来像一个不错的 html 页面
使用 IE8 时响应只有 263 长,类型为
text/html
这是一个小的 javascript,它给出了 top.location.href=
我的 mysql 数据库设置为 utf-8
所以我认为我的 php 处理程序实际上没有设置为从 javascript 中获取一些 href 而是处理 html 从而更新数据库?
所以这可能是导致请求不更新 IE8 中的数据库的原因吗? IE8 中 http 请求的默认字符集是什么? 我可以通过以某种方式在请求中插入标头以使 IE8 以 utf-8 发送它来更改我的代码吗?如果是这样,我将如何修改 xmlhttprequest 这样做? 我在这里完全吠错了树吗?
【问题讨论】:
-
什么是“statname”,是否包含必须编码的字符?
-
staname=HP 或 MP 任意选择
-
所以请求最终是 /character/statincrease/stat/HP
-
所以 IE 中的响应类似于 "top.location.href=" ?您在服务器上是否有任何文件可以输出此响应?
-
所以经过更多搜索后,我读到 IE8 可能存在跨域 xmlhttprequests 问题,因为这是 iframed 到另一个站点,这可能是导致服务器响应顶部的跨域问题.loation.href 标记到其 iframe 所在的站点?
标签: php jquery mysql ajax internet-explorer-8