Web sayfamın bir kısmıyla örnek bir JSON oluşturdum:
{"html": {"#data": "\nData
\n<div class="\"manufacturer-image\"">\n \n</div>\n
<form action="\"/manage/update-manufacturer-data/3\"" method="\"post\"">\n \n
<div class="\"field\"">\n <div class="\"label\"">\n :\n
</div>\n \n \n <div class="\"error\"">\n
<input id="\"id_name\"" name="\"name\"" maxlength="50" type="\"text\"">\n
\n </div>\n \n </div>\n\n
<div class="\"field\"">\n <div class="\"label\"">\n :\n
</div>\n \n \n <div>\n <input name="\"image\"" id="\"id_image\"" type="\"file\"">\n
</div>\n \n </div>\n\n <div class="\"field\"">\n <div class="\"label\"">\n
:\n </div>\n \n \n <div>\n
\n </div>\n \n
</div>\n \n <div class="\"buttons\"">\n <input class="\"ajax-save-button" button\"="" type="\"submit\"">\n
</div>\n</form>"}}
Bu dize ajax çağrısı ile döndürülür ve jQuery 1.6.1 bir hata atar:
SyntaxError: JSON.parse: expected ',' or '}' after property value in object
kodun aşağıdaki bölümünde:
parseJSON: function( data ) {
if ( typeof data !== "string" || !data ) {
return null;
}
//Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
//Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
console.warn('data: ', data);
var ret;
try{
ret = window.JSON.parse(data);
} catch(e){
ret = {};
console.warn(e);
}
return ret;
//return window.JSON.parse( data );
}
Burada neyi özlüyorum?
DÜZENLE:
Bir önceki 'json' ile (ki bu arada python'un simplejson lib'leri ile yaratılmıştı, bu yüzden her yerde nasıl çalışabilirim diye merak ediyorum) ve şimdi jsonlint'in doğru JSON'a sahip olduğumu gösterdiğini gördüm. Yine de sorun aynı kalıyor. Yeni dize:
{"html": [{"#data": "\nData
\n<div class="manufacturer-image">\n \n</div>\n<form action="/manage/update-manufacturer-data/4" method="post">\n \n <div class="field">\n <div class="label">\n :\n </div>\n \n \n <div class="error">\n <input id="id_name" type="text" name="name" maxlength="50" />\n \n </div>\n \n </div>\n\n <div class="field">\n <div class="label">\n :\n </div>\n \n \n <div>\n <input type="file" name="image" id="id_image" />\n </div>\n \n </div>\n\n <div class="field">\n <div class="label">\n :\n </div>\n \n \n <div>\n \n </div>\n \n </div>\n \n <div class="buttons">\n <input type="submit" class="ajax-save-button button" />\n </div>\n</form>"}]}
EDIT2:
Tamam görünüyor, JSOn arka ucum bırakarak uygun ama dilsiz jQuery her '' 'etrafında garip ek tırnaklar ekler.