[英]JQuery ajax php post problem
這聽起來可能很奇怪,但是我有一個JQ / AJAX / PHP發布問題。
我的“代碼”無處不在,並且在大多數情況下都可以使用,除了1-我嘗試在過程中傳遞標簽時。
我這樣抓HTML
var ed = $('#fraRTE').contents().find('body #editarea').html();
#fraRTE
是iframe寬度,是可編輯的div #editarea
因此是.contents().find('body #editarea').html()
因此,如果var ed
只是“ hello world等...”,則沒有問題,但如果var ed
是“ hello world等...... <img src="image.png">
“數據不會被處理-如果var ed
是“ hello world等。... <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
alert(msg)告訴我已(或尚未)發布到數據庫的內容。 這是我看到上述問題的地方。 即是否包含<img...>
建議
構造請求參數時不要使用字符串串聯,否則它們將無法正確進行url編碼,並且如果參數包含某些特殊字符,將無法正確接收它們。 這是正確的方法:
var data = { content: ed };
$.ajax({
type: 'post',
url: 'script.php',
data: data,
success: function(msg) {
alert(msg);
}
});
jQuery非常聰明,可以為您處理將請求數據轉換為查詢字符串的過程。
$.ajax({
type: 'post',
url: 'script.php',
data: { content: ed },
success: function(msg) {
alert(msg);
}
});
您遇到的問題是數據無法正確轉義。
為了自己對其進行字符串化,您必須使用encodeURIComponent()
"content=" + encodeURIComponent(ed);
但是,讓jQuery為您做到這一點要簡單得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.