2009-06-29 7 views
1

Ich benutze $(). Post und php, um den Inhalt eines <textarea> zu ändern.jquery.post() und php

Das Skript ist erfolgreich - Firebug zeigt deutlich, dass der Text zwischen den Textarea-Tags geändert hat und meine kleine Warnung ausgelöst wird.

Der Benutzer sieht jedoch die Änderungen nicht. In Firefox tritt die Änderung überhaupt nicht auf, und in IE aktualisiert das Textfeld bis zu 10 Sekunden später.

Hier ist die jquery Ich verwende:

$(document).ready(function() { 
    $('#pv_list li:first').addClass('hilite'); 
    $("input[name='db_entries']:first").attr('checked', 'checked'); 
    $("input[name='db_entries']").click(function() { 
     $.post("changeEntry.php", {post: $(this).val()}, function(data) { 
      $("textarea").text(data);alert('done'); 
     }); 
     $('#pv_list li').removeClass('hilite'); 
     $(this).parent().addClass('hilite'); 
    }); 
}); 

Zuerst dachte ich, es war, weil die Seite nicht bestätigen, aber es bestätigt Übergangs-xhtml.

Die Sache, die mich wirklich nervt, ist, dass ich es vorher arbeiten ließ und nicht herausfinden kann, was ich änderte.

Antwort

3

Haben Sie versucht, mit val() den Wert der Textarea anstelle von text() zu setzen?

$.post("changeEntry.php",{post: $(this).val()}, 
     function(data) { 
      $("textarea").val(data); 
      alert('done'); 
}); 
+0

Gut dang. Ich dachte, das war nur für Tags, die tatsächlich "Eingabe" im Tag-Namen haben. Arbeitete großartig. Danke :) – andrewheins

+0

Denken Sie nur daran, wie Sie es mit dem normalen DOM tun würden - es ist immer noch textarea.value - nicht textarea.nodeValue oder textarea.data oder irgendetwas anderes. –

5
+2

+1 für das "Stackoverflow Archive" -Format. : P –

+1

+1 für die Links –

+0

Danke Jungs. Es ist unglaublich einfach, eine Site-Suche auf Google zu machen, also versuche ich, einen "Archiv" -Teil zu allen Fragen hinzuzufügen, die ähnlich zu früheren Themen sind, die Google auftaucht. – Sampson

-2

Ich bin nicht sicher, aber eine Möglichkeit ist, dass Sie tun sollten:

function(data){ 
    $("textarea").attr("value",data); 
    alert('done'); 
} 
0

Wäre es nicht einfacher, die load() Funktion zu benutzen?

$("input[name='db_entries']").click(function() { 
    $("#outputarea").load("?", {"paramName":this.value}); 
}); 
+0

Warum? ' – Sampson

+0

Der ganze Zweck des Onclick-Handlers ist, den Inhalt des Textarea-Elements zu setzen, oder? Und das macht load(). – VolkerK