2012-05-07 2 views
0

У меня есть массив JAVASCRIPT allPois, который содержит несколько объектов ПОИ с приведенной ниже структуры:Каков правильный способ кодирования HTML в JAVASCRIPT + JSON и декодировать его в PYTHON?

var poi = { 
     title: pois[x].title, 
     lat: pois[x].position.lat(), 
     lng: pois[x].position.lng(), 
     html: pois[x].html 
    }; 

Это функция JAVASCRIPT, что вызывает мой сервер:

function save(){ 

    var jsonizedData = JSON.stringify({theArray:allPois}); 

    jQuery.ajax({ 
     type:  'POST', 
     url:  'http://localhost:8000/save', 
     contentType:'application/json; charset=utf-8', 
     dataType: 'json', 
     data:  mydata, 
     async:  true 
    }); 
} 

Это функция на стороне сервера, обработать запрос:

def save(request): 
    for object in request.POST: 
     my_data = simplejson.loads(object) 

    return none 

что это лучший способ для кодирования/декодирования параметра «HTML» (который содержит собственно HTML сотрудничества de), чтобы он мог правильно загружаться на сервере?

+0

Пожалуйста, покажите код, который присваивает значение 'pois [x] .html', в частности, какую функцию jQuery вы используете? –

+0

pois [x] .html заполняется значением текстового поля, которое используется для создания/редактирования html - здесь не используется функция JQuery: pois [x] .html = myTextArea.value; – Miki

ответ

0

Поскольку стоимость имущества .html составляет string, вам ничего не нужно. JSON может обрабатывать строковые значения. Любые изменения, сделанные вами, только ухудшат ситуацию.

Ваша проблема, вероятно, в том, как вы получаете значение из области текста. See this jsfiddle how special characters are handled.

Но в современных браузерах на любом этапе не требуется кодирование/декодирование.

О, и убедитесь, что вы очищаете HTML, чтобы избежать XSS and other attacks.

+0

Когда свойство .html содержит фактически код HMTL, функция simplejson.loads (object) терпит неудачу, то есть: art"}, {"title": "POI B", "lat": 40.5507793, " lng": - 110.89104739999999, "html": "End"} ]} ']}> делает simplejson.loads неудачным: строка без инициализации начинается с: строка 1 столбец 80 (char 80) – Miki

+0

Мне кажется, что я должен кодировать HTML-код перед использованием JSON.stringify в своем javascript-коде. – Miki

+0

Нет. Вам просто нужно получить HTML правильно. 'St art" 'не HTML. Это просто случайный текст, который похож на HTML, но что такое' src ': [u'' должен означать? Он должен быть ''. Откуда взялась эта строка? похоже, что вы создали это с помощью Python вместо того, чтобы вводить его в текстовую область. –