【问题标题】:Space Before Ajax Response (jQuery, PHP)Ajax 响应前的空间(jQuery、PHP)
【发布时间】:2010-11-05 00:19:58
【问题描述】:

我正在使用 jQuery 来发出 ajax 请求。数据很好地到达 PHP,但响应没有正确返回到 javascript。不知何故,在响应之前有一个空格。我知道这一点是因为 Firebug 是这么说的,而我的代码不起作用,因为空间在那里。当我期望有一个空间时,它可以正常工作。关于什么可以增加空间的任何想法?

这是我的 ajax 函数:

function my_ajax (aurl, adata, aretfunc) {
 $.ajax({
  type: "POST",
  url: aurl,
  data: adata,
  success: function(msg) {
    eval(aretfunc+'(msg);');
  }
 });
}

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    在 PHP 文件中的 <?php ?> 标记之外寻找虚假的空白字符。执行 PHP 脚本时,任何此类空格都会得到输出。如果您的 PHP 文件包含其他 PHP 文件,同样的事情也适用于这些文件。

    【讨论】:

    • +1 这可能是最隐蔽的错误之一。我在与第三方供应商一起处理一些 PHP 代码时遇到了这个问题。在一次迭代中,未经测试,他们决定在其自己的 PHP 块内的每个文件的顶部添加一个 cmets 块,然后在实际 PHP 代码块之前添加一个空行。好吧,空白行被认为是发送到浏览器的内容,因此随后需要设置 http 标头(例如)的任何/所有代码都失败了。
    • 嗨......我的代码现在也发生了同样的事情......我已经尝试在不影响代码可读性的情况下删除任何不必要的空间......我仍然得到空间......无论如何。 . 我在早期代码中大量使用了空格,但直到现在我才看到这个问题....
    【解决方案2】:

    同意,在<?php ?> 之外寻找虚假的空白字符。一个建议,一个完全合法的建议是简单地删除尾随的?>,因为它们是不必要的。 In fact, it's a coding standard for Drupal.

    【讨论】:

    • 我在调查此类问题时发现的一个线索是在浏览器中查看源代码并在 DOCTYPE 声明之前看到一个空白行(网页中的第一行)。
    • 这个。我刚刚从我的 CodeIgniter 模型 php 文件的末尾删除了 ?> 并解决了问题,不再有空格输出!
    【解决方案3】:

    在某些情况下,我发现在执行任何操作之前通过 $.trim() 运行响应可以很好地工作。

    当然,上面的解决方案仍然非常适用,但是如果您处于无法更改的情况,我认为值得扔掉。

    【讨论】:

    • 这很好。非常有成效的想法,如果调试初始代码需要很长时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2012-03-26
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多