2012-05-07 62 views
0

我有一個JavaScript陣列allPois其中包含與下面的結構幾個POI的對象:在JAVASCRIPT + JSON中對HTML進行編碼並在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的textarea的值 - 這裏沒有使用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列(字符80) – Miki

+0

它看起來我應該在我的JavaScript代碼中使用JSON.stringify之前對HTML進行編碼。 – Miki

+0

不需要。您只需要以正確的方式獲取HTML。 'St art「'不是HTML,它只是隨機文本,看起來與HTML相似,但是'src':[u''應該是什麼意思?應該是''。這個字符串從哪裏來?看起來你是用Python創建的,而不是將它輸入到文本區域。 –

相關問題