2011-03-27 117 views
0

這可能聽起來很奇怪,但我有一個JQ/AJAX/PHP的帖子問題。JQuery ajax php post problem

我的「代碼」在那裏,並在大多數情況下工作,除了1 - 當我試圖通過過程傳遞標籤。

我抓住這樣

var ed = $('#fraRTE').contents().find('body #editarea').html(); 

#fraRTE的HTML是iframe寬度可編輯的div #editarea因此.contents().find('body #editarea').html()

所以,如果var ed僅僅是「世界你好等等......」沒有問題和數據處理,但如果var ed是像「你好世界等.... <img src="image.png">」的數據不處理 - stangely如果var ed是「你好世界等...... <img src="image.png">」 - 文字和圖像之間沒有差距數據實際上被處理。

如果我alert(ed)之前的帖子,然後我看到了「正確」的字符串 - 無論它的內容,後是這樣的:

var data = 'content='+ed; 
$.ajax({ 
type: 'post', 
url: 'script.php', 
data: data, 
success: function(msg) { 
alert(msg); 
} 

});

我在「data:data」之前創建數據字符串,因爲字符串中還有幾個項目。

alert(msg)echo $_POST['content'];script.php

設置警報(MSG)告訴我發生了什麼(或沒有)被髮布到數據庫。這是我看到上述問題的地方。即<img...>

建議納入(或沒有),請

+0

'var data ='content ='+ ed;' - better use'var data = {content:ed};' – ThiefMaster 2011-03-27 09:15:10

+0

@ThiefMaster - 抱歉,爲什麼? - 我在JQ上仍然是新手,全是 – 2011-03-27 09:16:58

+1

它確保你不必關心數據中的特殊字符,例如'&' - jQuery會將數組序列化爲適當編碼的字符串。 – ThiefMaster 2011-03-27 09:18:00

回答

0

jQuery足夠聰明,可以將您的請求數據轉換爲查詢字符串。

$.ajax({ 
    type: 'post', 
    url: 'script.php', 
    data: { content: ed }, 
    success: function(msg) { 
    alert(msg); 
    } 
}); 

您遇到的這個問題是數據未正確轉義。

爲了自己的字符串化它,你將不得不使用encodeURIComponent()

"content=" + encodeURIComponent(ed); 

但它的簡單得多,只讓jQuery的爲您代勞。

+0

{content:ed} - 對我不起作用,但「content =」+ encodeURIComponent(ed);是完美的。 – 2011-03-27 09:26:06

+0

它應該工作。查看實際的請求,查看您的PHP頁面,查看查詢字符串中的內容。假設'ed'只是一個字符串,那麼'{content:ed}'將起作用,我保證。自己編碼將是「做錯了」。 – 2011-03-27 09:29:28

0

構建的請求參數時,不要使用字符串連接,否則將無法正確URL編碼,如果參數包含一些特殊的字符也不會被正確接收。下面是正確的方法:

var data = { content: ed }; 
$.ajax({ 
    type: 'post', 
    url: 'script.php', 
    data: data, 
    success: function(msg) { 
     alert(msg); 
    } 
});