[php] Probleem met opmaak tekst via AJAX

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hoi,

Het volgende is me gelukt:
1) een div'je met een javascript:onclick een xmlhttprequest laten uitvoeren
2) datzelfde div'je vullen met een <input type=text>
3) onsubmit() de tekst uit de inputfield echo'en
Dat gaat goed omdat de tekst 1 zin is zonder newlines of breaks

Als ik dit echter probeer met een textarea, dan gaat het mis.
Even wat code om het probleem te illustreren:

in de index.php
code:
1
2
<div title="click to edit article" id="edit_article_box" class="edit_article">
<div onclick="javascript:loadFragmentInToElement('ajaxserver.php?a=showeditarticle&story_id=<?=$row->id;?>','edit_article_box')";><?=stripslashes($row->pub_article);?></div>


in ajaxserver.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        case "showeditarticle" :
            $sid = $_REQUEST['story_id'];
            $res = mysql_query("SELECT pub_article FROM xxx WHERE id = '".$sid."' LIMIT 1");
            $row = mysql_fetch_object($res);
            ?>
            <textarea style="border:none; color: black; font: 10px arial;" cols="150" rows="15" id="pub_article"><?=stripslashes($row->pub_article);?></textarea><br />
            <input type="submit" name="submit" value="ok" onClick="javascript:loadFragmentInToElement('ajaxserver.php?a=editarticle&story_id=<?=$sid;?>&val=' + document.getElementById('pub_article').value,'edit_article_box');">
            <?php
        break;

        case "editarticle" :
            $val = addslashes(strip_tags($_REQUEST['val']));
            $sid = $_REQUEST['story_id'];
            if ( !empty ( $val ) ) {
                mysql_query("UPDATE xxx SET pub_article = '".$val."' WHERE id = '".$sid."' LIMIT 1");
            }
            ?>
            <div onclick="javascript:loadFragmentInToElement('ajaxserver.php?a=showeditarticle&story_id=<?=$sid;?>','edit_article_box')";><?=stripslashes($val);?></div>
            <?php
        break;


nu gaat het mis met de tekst formatting
als ik op het DIV'je met de onclick klik, verspringt de DIV naar een textarea die is gevuld met de tekst die oorspronkelijk in de DIV stond (snap je het nog?)
daarin is de opmaak nog goed qua newlines / breaks
als ik deze echter submit, wordt-ie in de database gezet zonder newlines, waardoor de nl2br functie niet meer werkt

de tekst ziet er dan in plaats van zo:

test
test
test

zo uit:

test test test

--------
conclusie - dit heeft mijns inziens te maken met het feit dat ik een xmlhttp GET doe en geen POST
maar het moet toch ook met een GET kunnen?
heeft iemand dit probleem al eens gehad en eenvoudig verholpen?
sorry voor deze warrige post..

  • Vesta
  • Registratie: November 2004
  • Niet online
Als je variabelen verstuurt via GET, moet je dan geen escape() doen?
code:
1
<input type="submit" name="submit" value="ok" onClick="javascript:loadFragmentInToElement('ajaxserver.php?a=editarticle&story_id=<?=$sid;?>&val=' + escape(document.getElementById('pub_article').value),'edit_article_box');">

Verwijderd

Topicstarter
je bedoelt urlencode?
maar het probleem is dan dat dit niet gaat werken:
[code]
urlencode(document.getElementById('pub_article').value)
[/code]
omdat het een clientside stukje javascript is...
dus waar moet ik die urlencode doen?
alle feedback welkom


nevermind - Vesta je hebt gelijk
ik dacht in php, maar er is gewoon een escape() in JS
thanks!

[ Voor 20% gewijzigd door Verwijderd op 18-08-2005 15:16 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:18

crisp

Devver

Pixelated

* crisp mompelt iets over javascript: dat niet in een eventhandler thuishoort.
Overigens is escape() deprecated; gebruik encodeURI of encodeURIComponent in de browsers die dat ondersteunen.
Overigens moet je rekening houden met de limiet op de lengte van je request-string bij GET; wellicht is een POST request hier beter op z'n plaats...

Intentionally left blank