Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot send special characters via jQuery ajax

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}
like image 685
Jonathan Clark Avatar asked Jan 14 '12 16:01

Jonathan Clark


2 Answers

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

like image 91
Vadim Gulyakin Avatar answered Nov 19 '22 03:11

Vadim Gulyakin


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 )
like image 2
satya prakash Avatar answered Nov 19 '22 03:11

satya prakash