我在服务器端使用 jQuery 来处理我的 ajax 请求和 Symfony 1.4 PHP。
我的问题在标题中。
如何重现:
我有一个页脚(在我的所有页面中)来显示我的网站的推文,这些推文有一种“保持活力的呼吁”来每 7 秒获得最后一条推文。
function loadNotyTweets(tweetCount) {
var jqXhr = $.ajax({
'url':'<?php echo url_for(array('module' => 'footer', 'action' => 'getLastApiTweets')) ?>',
'type':'GET',
'async':true,
'dataType':'json',
'cache': false
}).done(function (data, textStatus, jqXHR) {
if (data != null) {
var j = 0;
for (var i in data) {
var text = formatNoty(data[i]['text'], data[i]['user']['screen_name'], data[i]['user']['name'], data[i]['user']['profile_image_url_https'], data[i]['created_at']),
hashTweet = calcMD5(text);
if (!$.cookie(hashTweet) || $.cookie(hashTweet) != 'close') {
// Display a noty containing my tweet
generateNoty(text);
}
j++;
if (j == tweetCount) {
break;
}
}
}
});
}
在服务器端:
function executeGetLastApiTweets(sfWebRequest $request) {
if ($request->isXmlHttpRequest()) {
// Get tweet using Twitter API
$tweets = $this->getApiTweets($request);
$lastTweet = '';
if (isset($tweets[0]) && isset($tweets[0]['text'])) {
$lastTweet = md5($tweets[0]['text']);
}
if ($this->isLastTweet($lastTweet)) {
return $this->renderText(json_encode($this->getTweetsUI($tweets)));
}
}
return sfView::NONE;
}
现在,当我在链接上单击我的网站时(就在我的 loadTweets() 调用之后),我得到了这个 Ajax 调用的响应,而不是我单击的链接的响应。
我不知道这里发生了什么...
信息:
我的 Apache deflate 压缩处于活动状态。我认为它可能来自于此。
有,我的 Apache Conf。
# MOD_DEFLATE COMPRESSION
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
Header append Vary User-Agent env=!dont-vary
# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7200 seconds"
ExpiresByType image/jpg "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/gif "access plus 1 days"
AddType image/x-icon .ico
ExpiresByType image/ico "access plus 7 days"
ExpiresByType image/icon "access plus 7 days"
ExpiresByType image/x-icon "access plus 7 days "
ExpiresByType text/css "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType text/html "access plus 7200 seconds"
ExpiresByType application/xhtml+xml "access plus 7200 seconds"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType application/x-javascript "access plus 7 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
</IfModule>
# END Expire headers
# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz|ttf)$">
Header set Cache-Control "max-age=86400, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers
# KILL THEM ETAGS
Header unset ETag
FileETag none