Używam jQuery do mojego żądania ajaxowego i Symfony 1.4 PHP po stronie serwera.Żądanie Ajaxa i moja Symfony 1.4 Odpowiedź: Treść nie pasuje do
Mój problem dotyczy tytułu.
Jak odtworzyć:
mam stopkę (we wszystkich moich stron), aby wyświetlić tweetów mojej stronie internetowej, którzy mają coś w rodzaju „podtrzymanie połączenia”, aby uzyskać ostatnich tweetów co 7s.
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;
}
}
}
});
}
A po stronie serwera:
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;
}
Teraz, gdy klikam na mojej stronie internetowej w link (tuż po moim loadTweets() jest wywołanie) uzyskać odpowiedź niniejszego zaproszenia Ajax zamiast odpowiedzi łącza klikam.
nie mam pojęcia, co appenning tutaj ...
Dla INFO:
I już mój Apache korekta kompresję czynną. Myślę, że to może pochodzić z tego.
Istnieje moje połączenie z Apache.
# 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
Czy próbowałeś zmienić niektóre ustawienia Apache? Wygląda na problem z Apache. Nie sądzę, aby istniała jakakolwiek możliwość, że PHP lub Symfony mogłyby w ten sposób zepsuć dwie różne prośby. A może to jest problem z twoim JS i linkami. Czy sprawdziłeś, czy kliknięcie linku powoduje, że zapytanie dotyczy właściwego adresu URL? –
Nie może pochodzić z mojego JS. Moje łącza są łączami HTML bez żadnych "powiązanych" zdarzeń jQuery. Myślę, że to może pochodzić z moich Ustawień Apache, ale to dziwne! Jak to mogło się stać ? Co może być nie tak z moją konfiguracją Apache? –
Ale czy to sprawdziłeś? Otwórz Firebuga, Fiddlera lub coś w tym stylu. Możesz sprawdzić na każde żądanie, które wykonujesz z przeglądarki. Yuo widzi, jaki URL jest wywoływany i co otrzymujesz jako odpowiedź. Kiedy jesteś pewien, że dzwonisz na właściwą stronę i otrzymujesz niewłaściwą odpowiedź, możesz pomyśleć, co jest nie tak z Apache. –