attribute bad formed in JSON data
Hi, I have a JSON data set parsed and at one point in the script I have this line:
Code:
<a class='dev' href="+page+" title='+title+' target=_blank>"+title+"</a>
The problem is that in any JSON data set I use the attribute "title" is bad formed and the result is the only first word from the data set which contains the title data. Why is so ?
make sure that title is a string, and that it does not contain an apostrophe, line break, or other invalid JSON string char.
if you need to, you can escape it with the function below:
Code:
function jx (s) {
if(!s.match){s=String(s);}
var m = {'\b':"\\b", ' ':"\\t", '\n':"\\n", '\f':"\\f", '\r':"\\r", '"':"\\\"", '\\':"\\\\"};
if (/["\\\x00-\x1f]/.test(s)) {
return "\"" + s.replace(/([\x00-\x1f\\"])/g, function (a, b) {var c = m[b];if (c) {return c;}c = b.charCodeAt();return "\\u00" + Math.floor(c / 16).toString(16) + (c % 16).toString(16);}) + "\"";
}
return s;
}
the code is this:
Code:
<script type="text/javascript">
var ix=0
function cback(obj)
{
var count=(obj.count);
while (ix<count)
{
var title=(obj.value.items[ix].title);
var pic=(obj.value.items[ix]["media:thumbnail"][0].url);
var author = (obj.value.items[ix]["media:credit"][0].content);
var page = (obj.value.items[ix].link);
var pub = (obj.value.items[ix].pubDate);
var dynDiv = document.createElement("div");
dynDiv.id = "p"+ix+"";
dynDiv.setAttribute('class',"SlidingPanelsContent")
dynDiv.innerHTML = ("<div style='border: 1px solid #000000;width:300px;height:272px;text-align:center;padding:3px;'><img class='show' src="+pic+" alt="+title+" /><br><a class='dev' href="+page+" title="+title+" target=_blank>"+title+"</a><br><p class='dev'>by: "+author+" on "+pub+"</p></div>")
document.getElementById('dv').appendChild(dynDiv);
ix=ix+1 ;
}
}
</script>
In this case for example the attribute 'alt' of the image is "Elegant" instead of "Elegant Visions" (in bold red and scroll right to find it).
Originally Posted by
rnd me
make sure that title is a string, and that it does not contain an apostrophe, line break, or other invalid JSON string char.
if you need to, you can escape it with the function below:
Code:
function jx (s) {
if(!s.match){s=String(s);}
var m = {'\b':"\\b", ' ':"\\t", '\n':"\\n", '\f':"\\f", '\r':"\\r", '"':"\\\"", '\\':"\\\\"};
if (/["\\\x00-\x1f]/.test(s)) {
return "\"" + s.replace(/([\x00-\x1f\\"])/g, function (a, b) {var c = m[b];if (c) {return c;}c = b.charCodeAt();return "\\u00" + Math.floor(c / 16).toString(16) + (c % 16).toString(16);}) + "\"";
}
return s;
}
Actually there is a space between words and that might explain it.
did you find a solution?
post all your html here and say what you want to happen.
I was trying to add attributes to the JSON parsed data such as "alt", "title" and other characteristics, but i gave up since this page isn't indexed by search engines or at least useful for the user. But I've noticed some strange results. For example when retrieving a value as "long words" the result looks like this:
Code:
title="long" words=""
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Tags for this Thread
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Bookmarks