2011-10-15 66 views
0

我試圖通過AJAX將HTML數據傳遞給服務器。我最終希望將完整的HTML代碼(包括任何內聯CSS定義)存儲在數據庫中。我不想對HTML數據進行任何更改,只是按原樣進行存儲。我的問題是,當我通過AJAX傳遞HTML數據時,當它到達服務器時,內聯CSS已被刪除,但不僅如此,它被錯誤地刪除,從而留下無效的HTML。jQuery AJAX從HTML數據中剝離出嵌入式CSS

這裏是我想要做的一個樣本:

var the_html = {'html':'<p><span style="font-size:42px;"><span style="color:#f00;"> 
    Some text</span></span></p>'}; 

$.ajax({ 
    type: 'POST', 
    url: 'ajax.php', 
    data: the_html, 
    success: function (data) { 
     alert(data); 
    } 
}); 

當數據到達它看起來像這樣的服務器:

<p><span>span style="color:#f00;">Some Text</span></span></p> 

在我看來,像jQuery的嘗試將所有內聯CSS去除,但通過去除第二個span標籤的開角支架,將其與第一個span標籤搞砸。在通過AJAX發送數據之前,我試圖轉義數據,但結果相同。另外,我使用的是對象字面量的語法,因爲我有更多的數據要通過比例,我希望它是一個關聯數組,當它到達服務器。

我不希望內聯CSS被剝離出來。我希望所有的標記加上任何CSS完整地發送到服務器。任何想法如何我可以做到這一點?

+0

你嘗試透過JSON.stringify? – PhD

+0

我試着在數據上調用JSON.stringify,但服務器端告訴我請求中有「不允許的字符」。 – James

+0

javascript的escape()函數怎麼樣? – PhD

回答

0

替換上的JavaScript /前端 並再次打開服務器端替換回從STYLE1到風格樣式1(或任何東西)風格

例如:

$阿賈克斯({ 網址: (POST),成功(success):函數(res),數據(data):{pid:p_id,內容:data.replace('style','style1'),更新:'update'}, 類型:'POST' {// alert(res) }});

在服務器端(PHP其對我來說):

str_replace函數( '樣式1', '風格',$內容)