Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Ajax – special characters (æ, ø & å) makes jQuery.load break


Reply

4 Posts   2718 Views

Avatar
joelg

28 August 2009 at 8:24am (Last edited: 28 August 2009 8:27am), Community Member, 129 Posts

Hi

I have a normal ajax-function that works fine. It executes with this jquery-code in the template:

<a href="#" onclick="jQuery('#ajaxContent').load('http://localhost:8888/mysite/kontakt/erstatBillede/299'); return false;">

And the php-code also works fine:

function erstatBillede()
   {
       if($this->isAjax)
      {
         $BilledeID = Director::urlParam("ID");
         $Billede = DataObject::get_one("BilledeObject", "BilledeID = $BilledeID");
         
         return $Billede->renderWith("ajaxSnippet");
      }
      else
      {
          return Array();
      }
   }

And at last the code for the ajaxSnippet:

<% control Billede %>
   <a href="$URL" class="group" title='$Title' rel="galleri">
      <img class="thumb" src="<% control SetWidth(360) %>$URL<% end_control %>" alt='$Title'/>
   </a>
<% end_control %>

$HTMLBeskrivelse

Now the problem is the HTMLTextfield: $HTMLBeskrivelse - this is plain html-code made in a SimpleTinyMCEField in an object powered by the DataObjectManager module. All of this also works fine, except when I use special characters like æ, ø and å in danish.

I've checked my database and it uses UTF-8 just like the html-template, so I guess that shouldn't be the problem.

If I change $HTMLBeskrivelse from "HTMLTextfield" to "Textfield" then I get raw html code out into the template. For some reason it just doesn't work as html-text.

I've also done a ContentNegotiator::disable(); in _config.php, but this doesn't make any difference.

Can anyone help?

Avatar
joelg

28 August 2009 at 9:12am Community Member, 129 Posts

Found a solution on this problem. I've been using ZendAMF to retrieve some data from Silverstripe to ActionsScript 3 and I remember having a similar problem. So I used this PHP function called html_entity_decode, which apparantly also helped with my AJAX problem:

    function erstatBillede()
    {
       if($this->isAjax)
      {
         $BilledeID = Director::urlParam("ID");
         $Billede = DataObject::get_one("BilledeObject", "BilledeID = $BilledeID");
         $Billede->HTMLBeskrivelse = html_entity_decode($Billede->HTMLBeskrivelse, ENT_NOQUOTES, "UTF-8");
         return $Billede->renderWith("ajaxSnippet");
      }
      else
      {
          return Array();
      }
   }

If you have any insight on this issue please post and share.

Avatar
dalesaurus

28 August 2009 at 9:58am Community Member, 283 Posts

Unfortunately this is the sad reality that is UTF-8 compliance. Decoding/Encoding the entities with php's built in functions as you are doing might be the best option. You might also give shot with iconv for comprehensive language set conversion:

http://us3.php.net/manual/en/function.iconv.php

Avatar
joelg

28 August 2009 at 7:29pm Community Member, 129 Posts

Ok, thanks for the reply...