2010-12-03 7 views
1

Mein Problem ist ganz ähnlich wie diese hier:html() Streifen Script-Tags in fancybox (jQuery) Ajax-Aufruf

Aber dies ist ein besonderer Fall und keine von ihnen arbeitete für mich.
Ich verwende das fancybox (1.3.4) jQuery-Plugin, um das Ergebnis eines Ajax-Aufrufs anzuzeigen, der eine HTML-Zeichenfolge zurückgibt. Der HTML-String enthält ein Ajax-Formular mit jQuery Zeilen, die wegen der html()-Funktion nicht ausgegeben werden. Ich habe versucht, es durch innerHTML zu ersetzen (das ist eigentlich das gleiche wie html()) oder die Tags durch andere ersetzen und dann aktualisieren, aber nichts hat funktioniert.
Wenn Sie genau wissen möchten, wo das passiert, ist die Zeile 265 in der Fancybox JS-Datei.

Irgendwelche Ideen, um das zu lösen?


Prost,
Nicolas.


EDIT: ein Beispiel für den von Ajax retreived Code mit dem <script> tag:

<div class="ddinline"> 
    <form id="form542612422" onsubmit="return false;" update="searchbtn" position="before" method="post" action="/Librariescategories/AJAXGetChildrenList" accept-charset="utf-8"> 
     <div style="display:none;"> 
      <input type="hidden" name="_method" value="POST" /> 
     </div> 
     <script type="text/javascript"> 
     //<![CDATA[ 
     $('#form542612422').bind('submit', function(){ $.ajax({async:true, type:'post', beforeSend:function(request) {$("#filter .ddinline").last().after('<img src="/img/loading.gif" id="catload" alt="" />');}, complete:function(request, json) {$('#searchbtn').before(request.responseText); $("#catload").remove(); createDropDown($("#filter .fulldrop").last());}, data:$('#form542612422').serialize(), url:'/Librariescategories/AJAXGetChildrenList'}) }) 
     //]]> 
     </script> 
     <select name="data[Librariescategories][id]" class="fulldrop" id="LibrariescategoriesId"> 
      <option value="0" selected="selected">select</option> 
      <option value="1">3D Models</option> 
      <option value="259">Imagery</option> 
      <option value="362">Textures</option> 
     </select> 
     <div class="hide"> 
      <input type="submit" value="Submit" /> 
     </div> 
    </form> 
</div> 
+0

Können Sie ein Beispiel für den HTML-Code einfügen, mit Skript, das Sie von Ajax abrufen? –

+0

Frage bearbeitet. – Nicolas

Antwort

1

Ich glaube, Sie könnten Ihr Skript und html etwas separat hinzufügen müssen. Sie können das mit einem Token verbundene Markup und Skript über die Verbindung senden. Teilen Sie sie über Javascript auf dem Client auf. Fügen Sie dann das HTML in das fancybox Element ein. Das Skript muss möglicherweise außerhalb des fancybox -Elements hinzugefügt werden. Hier ist ein Beispiel dafür, wie die HTML und Script in das gleiche Element hinzuzufügen:

http://jsbin.com/otage3/2/edit

Hoffnung, das hilft.

Bob

+0

Hallo Bob, das ist eine großartige Idee, aber ich benutze CakePHP und das JavaScript wird automatisch vom AJAX-Helfer in der Ansicht erzeugt, sodass ich keine Möglichkeit sehe, es vom HTML zu trennen. Darüber hinaus kann ich keine "Standard" -Syntax für den generierten Code verwenden, da die Formular-ID automatisch während des AJAX-Hilfscodes generiert wird. Prost. – Nicolas

+0

Oder ich kann den JS-Code über ein Regexp extrahieren und versuchen, es irgendwo im übergeordneten Dokument einzufügen. Ich bin mir nicht sicher, ob das möglich sein wird, aber ich werde es versuchen. – Nicolas

+0

Ihre Idee war die Gute! Ich spalte meine Zeichenfolge in zwei: eine mit dem regulären HTML und die andere mit dem JS, dann füge ich das HTML ein und füge das JS an den 'fancybox-content'-Wrap in einem'

Verwandte Themen