【问题标题】:jQuery Fails to retrieve datajQuery 无法检索数据
【发布时间】:2012-02-25 14:19:34
【问题描述】:

我有一个非常简单的脚本,如下所示:

$(function() {

    var url = theme_directory + '/func/api.php';

    $.get( url, function(data) {
       alert("Data Loaded: " + data);
     });

});

而 api.php 看起来像这样:

<?php
echo('hello');
define('WP_USE_THEMES', false);
require_once( dirname( __FILE__ ) . '/../../../../wp-blog-header.php' );

这行得通。但是,当我像这样将出口放在下面时:

<?php
define('WP_USE_THEMES', false);
require_once( dirname( __FILE__ ) . '/../../../../wp-blog-header.php' );
echo('hello');

然后我浏览到 api.php,它向我显示“你好”,但是当我使用 javascript 时,它不会向我显示警报。将 hello 移回,它再次起作用。这让我很困惑ddd。


<?php
echo ' ';
define('WP_USE_THEMES', false);
require_once( dirname( __FILE__ ) . '/../../../../wp-blog-header.php' );
print_r($wp);

现在 javascript 将向我显示 $wp... 的内容,但是,删除 echo ' '; 并且不会触发 javascript 警报。


这与 WordPress 永久链接有关。关掉它就可以了,我打开它就不行了。

【问题讨论】:

  • 您是否查看过 Fiddler 或浏览器控制台中的响应以查看返回的内容?
  • 没有MAC版本的Fiddler(别说MAC是问题;))
  • 比使用Charles 或浏览器中的调试器。 :) 你也可以设置ajaxError() 来捕获失败的请求。
  • 当我在顶部找到回声时,当我删除顶部的回声时,查尔斯说它返回 404 Not Found =/
  • 但是当我在浏览器中访问时请求的url确实存在

标签: javascript ajax wordpress


【解决方案1】:

我相信 WordPress 的“花式”永久链接使用 Apache 的 mod_rewrite。如果 Apache 返回 HTTP 301 来重定向浏览器,jQuery 将不会遵循该重定向。您可能需要查看this Stack Overflow question 来解决这个问题。

【讨论】:

  • 嗯,有趣,这是否意味着通过回显重定向过程不会发生,这就是它起作用的原因?
  • 这就是我的猜测。一旦您回显了非标头内容,Apache 就无法再发送标头,从而阻止重定向。
【解决方案2】:

问题可能出在require_once( dirname( __FILE__ ) . '/../../../../wp-blog-header.php' ); ,找不到那个路径

但是,如果您只是想查看生成的字符串,请使用 load()。

$('#input').load('api.php');

【讨论】:

  • Load 的行为与上面的 get 相同。顶部的回声将使其工作,上面没有回声,它不会被触发。这是令人困惑的部分。
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2013-11-16
相关资源
最近更新 更多