2012-11-23 10 views
5

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 
+0

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? –

+0

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? –

+0

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. –

Odpowiedz

2

zadeklarowanej zmienną ajax jak:

var jqXhr = $.ajax({ 

Następnie odwołać zmienna jak:

}).done(function (data, textStatus, jqXHR) { 

Popraw mnie jeśli się mylę, zmienne JavaScript/jQuery są rozróżniane -wrażliwy.

+0

Tak, wielkość liter ma znaczenie, ale pierwsze jqXhr nie jest tym samym obiektem, co jqXHR. Cóż, jeśli chcę, mogę usunąć parametr jqXHR z wykonanej funkcji. Nie używam tego. –

Powiązane problemy