2010-07-29 28 views
1

我使用jquery.ajax來保存豐富的文本區域。用ajax發送html文本,問題在'&'上?

corr=some.innerHTML(); /* corr='< some text <' */ 
$.ajax({ 
    type:"POST", url:"flatplan/save_corr.php", 
    data:"corr="+corr+"&IDFS="+IDFILES, 
    success: function(msg){ 

    }, 
    error:function(x,e){ 
     ajax_errors(x,e); 
    } 
}); 

的問題是,科爾變量可以包含「&」字符內,並將其發送更多PARAMS 給人的問題。有沒有辦法用ajax html文本發佈?

回答

5

您可以(也應該)轉義查詢字符串組件with encodeURIComponent

data: "corr=" + encodeURIComponent(corr) + "&IDFS=" + encodeURIComponent(IDFILES), 

編輯:jQuery可以接受數據字段中的對象。你應該只使用

data: ({ 
    corr: corr, 
    IDFS: IDFILES 
}), 

這樣jQuery可以自動編碼查詢字符串。

+0

同意,發送數據到jquery作爲一個對象是迄今爲止最好的計劃。 '數據作爲查詢字符串'的語法在我看來是非常糟糕的,顯然它還有其他問題。 – JAL 2010-07-29 15:30:05

+0

+1將數據作爲對象發送。 – Bakhtiyor 2010-12-11 10:06:21

0

我會親自轉義所有通過AJAX發佈的html,並在處理之前使用PHP文件unescape生成結果或理智檢查PHP中的輸入。我沒有被抓到這個,但我可以看到它可能是一個問題。

1

更正值不能包含&。如果是這樣,你需要urlencode該值。爲此,請使用escape()方法。

var corr = escape(some.innerHTML()); //(corr='< some text <') 
$.ajax({ 
    type:"POST", 
    url:"flatplan/save_corr.php", 
    data:"corr="+corr+"&IDFS="+IDFILES, 
    success: function(msg){ 
     //success handler 
    }, 
    error:function(x,e){ 
     ajax_errors(x,e); 
    } 
});