Jonathan Clark
Jonathan Clark

Reputation: 20558

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}

Upvotes: 7

Views: 28860

Answers (3)

Anurag U R
Anurag U R

Reputation: 1

You can achieve this by using JSON object.

For example:

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

or, you can use URLencode before post.

Upvotes: 0

satya prakash
satya prakash

Reputation: 97

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 )

Upvotes: 2

Vadim Gulyakin
Vadim Gulyakin

Reputation: 1431

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

Upvotes: 13

Related Questions