2013-08-22 25 views
0

我有這個jQuery AJAX功能,從CKEDITOR text_area retrive數據,並通過AJAX將其發送至.php文件:jQuery的AJAX添加 '%20' 的空間,普通的JavaScript XMLHTTP請求不

function saveEmailData(){ 
    var text_body = encodeURIComponent(CKEDITOR.instances.text_body.getData()); 

    $.ajax({ 
     url: 'al_ajax.php', 
     cache: false, 
     data: {area: text_body, use: 'savemaildata'}, 
     type: 'POST', 
     success: function(result){ 
        alert(result); 
       }, 
     error: function(result){ 
        alert('Error'); 
       }, 
    }); 
} 

PHP:

$area = $link->real_escape_string($_POST['area']); 

$insert_query = $link->query("INSERT INTO ALLARME_EMAIL_TEXT (area) 
           VALUES ('$area') 
           ON DUPLICATE KEY UPDATE 
           area = '$area' 
           ") 
           or die('Error.'); 

if($insert_query){   
    echo 'OK!'; 
} 

的問題是,使用jQuery AJAX,我將有數據庫%20上,與正常javascript function,不會發生這種情況:我總是用。爲什麼?

function saveEmailData(){ 
    var text_body = encodeURIComponent(CKEDITOR.instances.text_body.getData()); 

    if(window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest();  
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     alert(xmlhttp.responseText); 
     } 
    } 

xmlhttp.open("POST","al_ajax.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("area="+text_body); 
} 
+0

你的「香草」AJAX代碼是可怕的過時。不再需要檢查是否存在'window.XMLHttpRequest'。 –

+0

謝謝,但是...這個評論並沒有幫助我 – Perocat

回答

2

這不是jQuery的錯。你躲過了正文兩次:

var text_body = encodeURIComponent(CKEDITOR.instances.text_body.getData()); 

注意的jQuery已經做encodeURIComponent到任何你在通過爲data。解決辦法就是擺脫它。

function saveEmailData(){ 
    var text_body = CKEDITOR.instances.text_body.getData(); 

    $.ajax({ 
     url: 'al_ajax.php', 
     cache: false, 
     data: {area: text_body, use: 'savemaildata'}, 
     type: 'POST', 
     success: function(result){ 
        alert(result); 
       }, 
     error: function(result){ 
        alert('Error'); 
       }, 
    }); 
} 
+0

謝謝你的回答!我不知道jQuery已經逃過了數據。這是寫在文檔的任何地方嗎?再次感謝你! – Perocat

+0

沒有問題!這個問題在我之前打了一次;) – Brian