2010-12-03 17 views
1

Ich benutze jQuery, um einen Link auf eine PHP-Datei zu entführen. Diese PHP-Datei ist meistens html, ruft aber zwei php-Funktionen auf, die jeweils eine for-Schleife verwenden, um html auszugeben. Das Problem, auf das ich gestoßen bin, ist, dass der Ajax-Aufruf das von der PHP-for-Schleife generierte HTML falsch verschachtelt.jQuery Ajax Aufruf falsch verschachtelt PHP generiert HTML

Das Einbinden der PHP-Datei direkt auf die Seite funktioniert gut, aber wenn versucht wird, es über Ajax zu greifen, wird der HTML-Inhalt jedes sequentiellen Durchlaufs durch die Schleife in den zuvor erzeugten HTML eingefügt. Zum Beispiel:

<div>Content1</div> 
<div>Content2</div> 
<div>Content3</div> 

wird:

<div>Content1<div>Content2<div>Content3</div></div></div> 

Dies ist der entsprechende Code für die PHP-Datei:

<div class="publishedPosts"> 
    <h3>Published</h3> 
    <?php displayPublishedBlogPosts(); ?> 
</div> 
<div class="verticalDivider"></div> 
<div class="draftPosts"> 
    <h3>Saved Drafts</h3> 
    <?php displayBlogPostDrafts(); ?> 
</div> 

Und das ist der jQuery-Code:

function adminPanelTabs() { 
    $('#adminPanelTabs ul li a').click(function(e) { 
    $('#adminPanelTabs ul li a.current').removeClass('current'); 
    $(this).addClass('current'); 
    $('#adminPanelContent').load($(this).attr('href')); 
    e.preventDefault(); 
    }); 
} 

Ich würde mich über Anregungen und Vorschläge freuen wie man das beheben kann.

alt text

+0

Wie sieht eine tatsächliche Antwort aus, nicht PHP-Code aber vollständig gerendert? Ich würde wetten, dass dein Problem da drin ist. –

+0

Schätzen Sie die Antwort, Nick. Ich habe hier ein paar Screenshots gepostet: Normal - http://nimblehost.com/test/normal.png –

+0

Falsch verschachtelt - http://nimblehost.com/test/incorrectlyNested.png –

Antwort

1

Go figure - verbringen Stunden erforschen, wie dieses Problem zu beheben, Post hier als letzter Ausweg, dann habe ich herausfinden, was das Problem 30 Minuten später ist.

Für das Protokoll wurde das Problem in den PHP-Funktionen aufgerufen. Sie enthielten Abschnitte, in denen das schließende div-Tag in einer if-Anweisung eingeschlossen war.

Die if-Anweisung einfach überprüft, ob der Benutzer in protokolliert wurde, und obwohl dies war wahr offenbar ein Ajax-Aufruf auf diese Weise macht nicht ausreichen, um eine if-Anweisung, damit das Schließen div-Tag wurde nie gegeben.

Ich möchte Nick für die Antwort danken, da dies geholfen hat, eine Idee über das Problem zu bekommen.

+0

Denken Sie daran, Ihre Antwort zu akzeptieren – ajreal

+0

+1 für eine detaillierte Antwort anstatt nur die Frage zu verlassen, sobald Sie es gelöst haben. :) – Chris

+0

@ajreal - danke für die Aufforderung, immer noch ein Neuling hier. ;-) –