7

I am developing a webpage where user is searching for files using tags. I am using jQuery Ajax to do the remote call to the API (database). It all works fine when I use non special characters like a-z but fails when using for example åäö.

On the serverside I am using PHP. I print the tag to see if it "arrives" and all a-z works fine but the åäö is not displaying at all. They seem to not "arrive".

What can be wrong?

This is my jQuery code:

var tags = $('#tags').val();

$.ajax ({
    type: "POST",
    url: base_url + "search", 
    data: "tags=" + tags + "&limit=" + limit, 
    beforeSend: function (html) {
            $("#search_results").html("Searching for files...");
    },
    success: function (html) {
            $("#search_results").html(html);
    },
    error: function (html) {
            $("#search_results").html('Something went wrong!');
    }
});

This is my server side code:

echo ($_POST['tags']);

I search and looked at related questions about this here on SO but non helped me unfortunately.

UPDATE

Using this solved it! Works fine now.

{tags: encodeURIComponent(tags), limit: limit}
3
  • Try "tags=" + encodeURIComponent(tags) + "&limit=" + encodeURIComponent(limit), or {tags: tags, limit: limit}. Commented Jan 14, 2012 at 16:24
  • This don´t work either: data: "tags=" + encodeURIComponent(tags) + "&limit=" + limit Commented Jan 14, 2012 at 16:28
  • {tags: tags, limit: limit} does not work either. Commented Jan 14, 2012 at 16:44

3 Answers 3

13

Data (tags) must be encoded before sending it to server using encodeURIComponent()

Sign up to request clarification or add additional context in comments.

3 Comments

This don´t work either: data: "tags=" + encodeURIComponent(tags) + "&limit=" + limit
Make sure that all parts of your flow are in UTF-8 check: HTML page; request encoding; server side encoding; AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); meta http-equiv="content-type" content="text/html; charset=UTF-8" Basically you will have to trace on which step character encoding is being lost.
Thanks, it solved my issue with sending special characters in Jquery AJAX request in Internet Explorer.
2

Below code is working fine for sending & and "" or any special characters via ajax call:

specialChar1= "JΛ̊KE#2@#*&($^@%#*@#%))*$&@*(""" ;
specialchar2 ="??&!!--##";
url = "/get/" + encodeURIComponent( specialChar1) +"/"+  encodeURIComponent ( specialchar2 )

Comments

0

You can achieve this by using JSON object.

For example:

[{"AttributeId":"4035","Value":"Street & House"}]

or, you can use URLencode before post.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.