【问题标题】:strange thing, ajax response includes whitespace奇怪的是,ajax 响应包括空格
【发布时间】:2011-07-25 12:47:42
【问题描述】:

我有几个 JS 函数用 $.ajax jquery 方法调用不同的 php 文件...昨天一切都很好,但是清理我的代码后,我不知道我做了什么,但现在 ajax 响应就像"[space]data" 而不是 "data"..

我可以在 Js 中使用修剪功能,但我想解决问题的根源......

为了避免这种情况,我所有的 php 文件都缺少最后一个 ?>,而在 <?php 之前我确定,刚刚检查过,没有空格...

我怎么会引入这个错误?是服务器吗?浏览器?

有趣的是,昨天我用 JSLINT 清理了我的代码..!坏主意..

谢谢

【问题讨论】:

  • 不确定我们应该如何在没有任何代码的情况下知道这一点......
  • 要显示的任何 php 代码?
  • phph 代码不流畅...只是
  • 我也有同样的问题。我有一些回车而不是空格......你解决了这个问题吗?我仔细检查了空格或返回我的脚本,但没关系。

标签: php javascript jquery


【解决方案1】:

我知道我在这个帖子上迟到了,找到它是因为我遇到了同样的问题。我能够确认,尽管您可以清除回调函数中的所有间距,但仍然可以在响应文本中获得这些空格/回车符(您甚至可以在“网络”下的 chrome 开发人员工具中看到这一点标签)。

所以我测试并发现如果您将ob_clean(); 放在回调函数的顶部,那么它会清除任何这些空格。我对这个功能了解不多,只是在法典中提到了它(http://codex.wordpress.org/AJAX_in_Plugins#Debugging)。希望能帮助其他因为同样的问题而在这里找到方法的人

【讨论】:

  • 也因为遇到了这个helpful explanation
  • 谢谢,这真的节省了我的时间,我浪费了很多时间来解决这个问题。
【解决方案2】:

如果服务器的响应包含额外的空间,那么 php 代码就是原因。如果您的回复不包含多余的空格,那么问题一定出在 javascript 中。

使用 Fiddler 检查来自服务器的实际响应,看看它是否真的有空间。然后,您将确定问题出在 PHP 还是 JS 上。然后就可以贴出相关代码了。

【讨论】:

    【解决方案3】:

    当我遇到同样的问题时,它只是 PHP 结束标记后的回车或空格,这是一个非常容易意外引入的东西。

    确保在脚本第一行的开头打开 PHP 标记,在结尾关闭它并删除关闭标记之后的所有内容(应该很容易在一个好的编辑器中发现)。

    我看不出为什么不关闭你的 PHP 标记真的很烦人.. 但这只是我!

    【讨论】:

    • 是的,我认为...事实上,我必须浏览所有子文件和父文件,我终于找到了额外的 f** 空间!谢谢
    • PHP 将 EOF 视为与 PHP 结束标记等效。因此,文件末尾的结束 PHP 标记是多余的。而且,正如您所发现的,它容易出错。除了破坏 AJAX 请求之外,如果您在 DOCTYPE 之前有任何空白,您可以将某些版本的 IE 发送到 quirksmode。在我的日常工作中,我们养成了不使用 PHP 结束标记的习惯,而且我从不在我的个人工作中使用它。
    • 我还发现 UTF BOM 在所有包含文件的开头都添加了空格。我重新保存了没有 BOM 的文件
    • 继续使用@SamStrachan UTF-8 编码尤其会导致此问题,如下所述:stackoverflow.com/questions/10199355/…
    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多