2012-02-25 49 views
0

我有一個非常簡單的腳本,像這樣:的jQuery無法檢索數據

$(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它不顯示我的警覺。把問候移回去,它再次運作。它讓我很困惑。


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

現在的JavaScript會告訴我的$ WP內容......然而,去除echo ' ';和JavaScript警報不會被觸發。


它與WordPress永久鏈接有關。當我關閉它時,它會起作用,當我打開時它不起作用。

+0

您是否看過Fiddler或瀏覽器控制檯中的響應以查看返回的內容? – epascarello 2012-02-25 14:26:55

+0

沒有MAC版本的提琴手(不要說MAC是問題;)) – Mark 2012-02-25 14:28:10

+0

比在瀏覽器中使用[Charles](http://www.charlesproxy.com/)或調試器。 :)您也可以設置[ajaxError()](http://api.jquery.com/ajaxError/)來捕獲失敗的請求。 – epascarello 2012-02-25 14:34:27

回答

0

問題可能在require_once(dirname(__FILE__) . '/../../../../wp-blog-header.php'); ,找不到路徑

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

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

加載的行爲與上面獲得的行爲相同。上面的回聲會使其工作,不會在上面放置回聲,也不會被觸發。這是令人困惑的部分。 – Mark 2012-02-25 14:37:46

1

我相信WordPress的「花哨」永久鏈接使用Apache的mod_rewrite。如果Apache返回HTTP 301來重定向瀏覽器,那麼jQuery將不會遵循該重定向。你可能想看看this Stack Overflow question來解決這個問題。

+0

嗯有趣,這意味着通過回聲重定向過程不會發生,這就是爲什麼它的作品? – Mark 2012-02-25 15:10:29

+0

這就是我猜測的。一旦你回顯了非標題內容,Apache就不能再發送標題了,這樣可以防止重定向。 – Brandan 2012-02-25 15:36:25