Pyadav
Pyadav

Reputation: 133

Lacking of Serializing or Encoding

function autosave() 
{ 
    setTimeout("autosave()", 15000); 

    var did = $("#did").val(); 
    var content = $('.nicEdit-frame').contents().find('#nicEditContent').html();

    if (content.length > 0) 
    { 
        $.ajax( 
        { 
            type: "POST", 
            url: "inc/autosave.class.php", 
            data:  "did=" + did + "&content=" + content,
                contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
            cache: false, 
            success: function(message) 
            { 
                $("#message").empty().append(message); 
            }
        }); 
    } 
}

What this does is takes what is in a textarea and sends it over to the autosave.class.php, which sends it off to the MySQL database.
The problem is that the data ends up in the database cut off, showing only the first few sentences of it; often cutting off at the quotation mark.
I am positive that this isn't the PHP to MySQL issue (already tested that), it's the AJAX/JQuery data to PHP part.
Is it the lack of serializing/encoding? If so, how would I fix it?

Upvotes: 0

Views: 87

Answers (3)

Alistair Laing
Alistair Laing

Reputation: 973

Couldn't you use serialize? http://api.jquery.com/serialize/

Upvotes: 0

SLaks
SLaks

Reputation: 887245

You should let jQuery build the POST string for you by passing an object:

data: { did: did, content: content },

Upvotes: 2

Lekensteyn
Lekensteyn

Reputation: 66395

Have your data properly escaped, if someone puts Me & You in a field, the field will only contain Me since & is considered a argument separator.

data:  "did=" + encodeURIComponent(did)
  + "&content=" + encodeURIComponent(content),

If data is still truncated, check the size of your database fields. MySQL does not fail if the passed data is larger than the field can actually hold.

Upvotes: 2

Related Questions